ディクショナリのキーをスマートに扱う

190722

ディクショナリのキーをスマートに扱う

ディクショナリを使った処理では、キーが存在するかどうかに気を付けて処理を行わなければなりません。キーを指定した代入を実行する際には、キーが存在しない場合は新たに追加されるので、問題はあまり起きません。気を付けなければならないのは、キーを指定してディクショナリの要素を参照する場合です。存在しないキーを使ってディクショナリの要素を参照しようとすると、例外(KeyError)が発生します。
例えば、ファイルに含まれる英単語の出現回数を数える処理を記述する場合、ディクショナリでは、キーとして同じ要素を登録できません。この性質を利用して、英単語をキーとして、出現回数(数値)を登録したディクショナリを作ることにします。
この例がアイキャッチに掲載したプログラムです。
① lineに英文を代入します
② wordcountの辞書を作ります
③ ループでは読み込んだ行にsplit()メソッドを使ってシーケンスを作っています。英文を空白文字で区切った結果が、1つずつ繰り返し変数に代入されていきます。英文の行が分割されて、繰り返し変数に英単語が代入され、ループが実行されます。
④ 繰り返し変数がディクショナリのキーとして登録されているかを調べています。もしキーとして登録されていたら、単語のカウントを1つ増加します。代入の右側では、キーを使ったディクショナリの参照が行われています。登録されていない単語が現れると、存在しないキーを参照することになります。そのため、in演算子を使ってキーが存在するかどうかを確認する必要があります。この処理がif文で行っていることです。
⑤ カウントに1を入れます。
⑥ ディクショナリのキーを打ち出しています。
⑦ ディクショナリを打ち出しています。

Dictionary-atomの場合

dictionary-PyCharmその2


↑人気ブログランキングに参加しています。ポチっと1票を!

AtomとPycharm

Atomで作ったPython ProgramをPycharmでデバッグ及び印書する

190623AtomとPycharm

Atomで作ったPython ProgramをPycharmでデバッグ及び印書する

① Atomで「elif」のエラーになった件をPycharmで実施する
② Atomでsrc(Python)までopen Project
③ Pycharmを走らせる
④ 「File」で「NewProject」Pythonを作成する
⑤ 「File」で「New…」をクリック
⑥ 「elif01.py」を作成(するとAtomのパスが表示される)*1
⑦ 「File」で「New…」をクリック
⑧ Python Fileをクリック(メニューの)
⑨ 「operator01.py」(ファイル名を入力)
⑩ Codeを入力
⑪ 「Run」をクリック
⑫ 「Ctrl+s」保存
⑬ Atom側にも反映されている
⑭ Atom Hydrogenを利用(debug可)
⑮ Pycharmで印刷可能
*1:Pathがsrcまで正常になっていなければ左ペインで指定し直す

以上

↑人気ブログランキングに参加しています。よろしければ1票を!

メニューの追加(Python,lions,NHK超AI入門,Linux,WSL,レジストリ,システムジェネレーションetc.)

メニューの追加(Python,lions,NHK超AI入門,Linux,WSL,レジストリ,システムジェネレーション,Atom,Emacs,markdown,Python,Flask)

「野生の証明」のメニューに「Lions」、「展覧会」、「食事」、「NHK超AI入門」、「Linux」、「WSL」(Windows Subsystem for Linux)、「レジストリ」、「システムジェネレーション」、「Atom」、「Emacs」、「markdown」、「Python」を追加した。
アイキャッチ画像は「Linux」、「WSL」のパスを示している。
①「活動」→「趣味」→「lions」
①-1「活動」→「趣味」→「展覧会」
①-2「活動」→「趣味」→「食事」
②「コンピューター」→「ソフトウェア」→「Deep Learning」→「NHK超AI入門」
③「コンピューター」→「ソフトウェア」→「オペレーティングシステム」→「Linux」(→「Flask」)
④「コンピューター」→「ソフトウェア」→「オペレーティングシステム」→「Windows10」→「WSL」
⑤「コンピューター」→「ソフトウェア」→「オペレーティングシステム」→「Windows10」→「レジストリ」
⑥「コンピューター」→「ソフトウェア」→「システムジェネレーション」
⑦「コンピューター」→「ソフトウェア」→「Editor」→「Atom」
⑧「コンピューター」→「ソフトウェア」→「Editor」→「Emacs」
⑨「コンピューター」→「ソフトウェア」→「Editor」→「markdown」
⑩「コンピューター」→「ソフトウェア」→「言語」→「その他の言語」→「Python(Object指向)」→「Python」

↑人気ブログランキングに参加しています。よろしければ1票を!

Python Program dictionary その2

Python Program dictionary その2

①辞書の定義
②keys()メソッド(keyの一覧表を表示する)
③④辞書にそのキーがあるかないか(if文などとともに用いられる)

↑人気ブログランキングに参加しています。よろしければ1票を!

Atom-WSL-PyCharm相関図

Atom-WSL-PyCharm相関図を簡単にまとめましたので中間報告的に記述します。(長短含めて)

Atom-WSL-PyCharm相関図

2019/01/06
Atom
① 印刷できない。
② Flaskがない。
③ データベースがない。
④ Moduleの管理が難しい。
⑤ Pythonの各属性を色表示できる。
⑥ JupyterのModuleを引き込むことができる。
⑦ Hydrogenでstep by stepのデバッグができる。(◎)
⑧ Windows特にExplorerが生で使える。
⑨ Demo Programが多数存在する。(◎)

WSL(Windows Subsystem for Linux)
① 印刷できない。
② データベースがない。
③ Jupyterのmoduleを引き込むことができない。
④ Step by stepのデバッグができない。
⑤ Windowsとのやり取りがUSB経由である。
⑥ Pythonの各属性を色表示できる。(◎)
⑦ Flask環境下でデバッグできる。(◎)
⑧ Linuxのコマンドがじかに実行できる。(◎)
⑨ Moduleの管理が比較的しやすい。

PyCharm
① Step by stepのデバッグができない。
② 有料でないとSQLite3(DB)が使えない。
③ 慣れていない。
④ Linuxのコマンドが使えない。
⑤ Jupyterとの連携がとりにくい。
⑥ 有料でデータベースが使える。(◎)
⑦ 印刷ができる。(◎)

以上

↑人気ブログランキングに参加しています。よろしければ1票を!

Flaskを使って今まで学習したこと

今まで学習したこと

2019/01/03

① FlaskをWSLにインストールする
② ディレクトリはflask(/)、templates、static、css、images、jsからなる。
③ Python Programの中で「app.route(‘/’)改行def index()」でデコレータ。
④ render_templateをimportすることでrender_template(‘demoxx.html’, name = ‘吉田’)をコーディングすることでnameパラメータによりhtmlファイルにデータを渡せる。
⑤ Python Programの先頭付近でapp = Flask(__name__)、最後にif __name__ == “__main__”改行、app.run(debug=True)を指定する。
⑥ demoxx.htmlの最後ででjsを呼び出せる。
⑦ js内のalertでdialogMSGを表示させられる。
⑧ requestのimportでwho = request.args.get(“who”)をコーディングすることによりADR領域に/?who=xxxxxxをタイプインすることで.pyにて受け取れる。
⑨ return “yyyy”で画面にyyyyを表示できる。return whoでwhoの内容が表示される。
⑩ htmlの中で{% if name %}のように書くことで制御文が構成できる。{% else %}等。
⑪ ADR領域にパラメータが複数ある時には&をデリミターにすることができる。
⑫ url_for、redirectを使ってreturn redirect(url_for(“func”))とコーディングすることにより(‘/’)で入ってきてもfuncにリダイレクトできる。
⑬ html= “””と“”“ return htmlでPythonプログラムの中にhtmlファイルを含めることができる。
⑭ formの中にtype=”text”とすると入力がテキスト形式、passwordとすると入力が伏字になって「・・・」のようになって画面には表示されない。placeholder=”名前”のようにすると入力マスに薄い字で「名前」と表示される。
⑮ Python Programの中でcheckxx.htmlを呼びmy_email = request.form[“emel”]としreturn render_template(‘indexxx.html’,age=my_age…,eml=my_email,…)とすればデータの入力および結果の表示ができる。
⑯ 二次元ディクショナリのコーディングはif user_data[i][“pass”] == passwdのようにする。[i]のiはループカウントになる。
⑰ session管理はdemo29.py(demo28.py)のようにすればよい。

以上

↑人気ブログランキングに参加しています。よろしければ1票を!

5ヶ年計画Revise up(ver3.0)

Qiitaに谷CEOの記事が載ったのでそれを参考にAIエンジニアになるための道程表をリバイズアップした。有用な記事、感謝いたします。

5ヶ年計画Revise up(ver3.0)

Qiitaに谷CEOの記事が載ったのでAIエンジニアになるための道程表(5ヶ年計画)をリバイズアップした。
有用な記事感謝いたします。

layout: “post”
title: “5ヶ年計画ver3.0”
date: “2018-12-18 13:38”

AIエンジニアに最低限必要な知識
まずは、AIエンジニアに最低限必要な知識を大きく6つに分けて見ました。
ここでは、将来AIエンジニアとして業務を行うにあたり、大きく分けて6つの内容の基礎知識の全体像を把握してください。

①プログラミングスキル
– Python
– numpy、pandas、matplotlib、scikit-learn、TensorFlowやkeras

この中で特にpandasを使いこなせると良いです。
機械学習を行う上で、データ前処理が必須なのですが、データ前処理を行う上で便利なライブラリです。

②数学
– 微分、線形代数、ベクトル、行列、確率など

③統計の知識
– 標準偏差、分散、確率分布、推定、検定などなど

④機械学習の基礎知識

教師あり学習と教師なし学習
前処理、特徴量設計、学習と評価
単回帰、重回帰分析、最小二乗法、パーセプトロン、ロジスティック回帰
決定木、ランダムフォレスト、サポートベクトルマシン、K-means
ディープラーニングの実装スキル及び知識
scikit-learn
TensorFlowやKerasなどのフレームワークの知識。
scikit-learnで学習済みモデルを作るまでの流れなど。
1.データの収集とデータの前処理欠損値の補完や外れ値の削除。
2.特徴量の設計(特徴量の選択)
3.モデル開発(モデルの選択と学習)
4.モデル評価・・・交差検定、混合行列で評価など。
⑤SQLを使ってデータベースを操作する知識。
– select、insert、update、delete、where、like、limit、sum、avg、max、group by、having、order by、テーブル結合、ビュー、サブクエリ、caseなどなど。

⓺クラウドの知識
– AWSやGCPやAzureなどのクラウドインフラ回りの知識。

大きく6つもあり以外と多いなと思われたかもしれませんが、一度に全てやるのではなく、まずは①と④の2つに絞ることをお勧めします。
理由は、実際にプログラムを書き、目に見える形にすることで継続して学びやすくなるからです。
はじめに理論から入ると独学だと挫折してしまうので。

人工知能を独学で勉強するオススメの方法
必要な知識は前の節で紹介しましたが、どのようにそれらを学べば良いのでしょうか。
①から⑥を学ぶ上で、以下のような順で知識を身につけていくことをお勧めしています。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ。
フェーズ2 機械学習プログラミング。
フェーズ3 Kaggleに挑戦。
フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。
フェーズ5 機械学習スキルを活用してプロダクト制作をする。
フェーズ6 教える(多分これはしないと思う)。

このフェーズごとに学んでいくことがもっとも自分自身に負荷をかけず、楽しく学ぶことができると考えています。

フェーズ1ではプログラミング初学者の方を指しております。
もし、プログラミングを初めてという方は是非フェーズ1から目を通してください。

フェーズ2では実際にフェーズ1で学んだ内容をベースに、機械学習プログラミングに関する勉強方法を説明して参ります。
既にscikit-learnを使った機械学習プログラミングを行なっている方は飛ばして頂いても構いません。

フェーズ3ではKaggleといったコンペティションを通じて実践的なプログラミングを学ぶ方法を記述しています。(これもしないと思います)

フェーズ4 機械学習をやる上で、データベースからデータを取り出すことは頻繁に行われますので、SQLの知識は必須です。ここでは、SQLの他にスクレイピング(データ収集用)、クラウドなどの技術の身につけ方を紹介します。(まずはAccessから)

フェーズ5 機械学習スキルを活用してプロダクト制作に取り掛かりましょう。このレベルまで到達した方は、プロダクトを通じて学ぶことが多いです。

フェーズ6 人に教えることで自分の分かっていなかったことが明確になることがあります。なので、友人などに機械学習を教えて自分の理解を深めることもよいでしょう。

以降、6つのフェーズごとに、どのようにこれらに取り組めば良いのか、お勧めの書籍などを紹介しながら説明していきます。

# 開発環境構築

1. PCにIpython、Python、Atom設定
・AtomではPython単体でデバッグ
・WSLとemacsでWebの練習問題をコピペで開発
・WEBのTopページをデザインおよび開発
・Topページ(index.html)の下でdemo.py demo.html demo.css demo.jsを開発
・各demoxx.pyデザイン、demoxx.htmlデザイン、代表.cssデザイン
・モジュール名を標準化
・モジュール一覧表を作成

2. Git、GitHub設定ー協力者選定
・GitHubを勉強(バインダーのもの)

3. ドキュメント計画策定
・モジュール一覧表を作成
・Pythonプログラム・ジャーナル整理
・HTMLジャーナル整理
・JSプログラム・ジャーナル整理

4. 開発計画

1. Python習得計画
2. 実機練習
3. Pythonプログラミング(コマンドプロンプトとWSL上で)
4. デバッグ
5. モデル構築
6. Ipytonデバッグ(WSL上でJupyternotebook)それをAtom環境下で開発(numpy,pandasの習得)

PCにIpython、Pyton、Atom設定

– Toshiba dynabook Satellite B554/K 使用
– ドキュメンテーション
– 開発環境下でテスト
– 逐一ブログアップ

# Git、GitHub設定ー協力者選定

– GiTHub学習
– 協力者要請

# ドキュメント計画策定

– 5ヶ年計画
– 1年間のスケジュール
– 3年間のスケジュール
– 最終計画

# 読書計画

– Qiita掲載中のドキュメント精読(仕掛中)
– オブジェクト指向で何故作るのか(購入済み)
– 新しいLinuxの教科書(購入済みー実機で参照したのち熟読)
– みんなのPython(購入済みー仕掛中、早めに)
– 日経Linux(購入)
– ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装(購入済みー熟読)
– Access学習(住所録作成・MySQL Queryを中心に学習)
– Qiitaでコピペしたドキュメント勉強(仕掛中)
– (プログラミング(Python)、統計的機械学習、深層学習(Deep Learning)、機械学習のための数学、確率・統計)
– やさしく学ぶ 機械学習を理解するための数学のきほん
– Ipython Interactive Computing and Visualization Cookbook(購入済みー最後に)
– その他

↑人気ブログランキングに参加しています。よろしければ1票を!

WSLとWin間のコード変換について(コピペ)

2018/12/14下記の記事は間違えでemacs→秀丸エディタではctrl+c(copy)、ctrl+v(paste)が単純にできる。お詫びして訂正いたします。WSL → Win10Proでは(限定的ではあるが)できる。1行の範囲内であれば問題ない。例えばWSL上のエラーメッセージをWin側でググってみるなどといったことは可能。

WSLとWin間のコード変換について(コピペ)

2018/12/11
2018/12/14下記の記事は間違えでemacs→秀丸エディタではctrl+c(copy)、ctrl+v(paste)が単純にできる。お詫びして訂正いたします。

① 2018/12/11現在で以下のことはWindows10Proのカレントバージョンに限定した話である。
② WSL → Win10Proでは(限定的ではあるが)できる。
③ 1行の範囲内であれば問題ない。
④ 例えばWSL上のエラーメッセージをWin側でググってみるなどといったことは可能。
⑤ 画面1はWSLのemacsでコピーしたソースプログラムをWin上で走る「秀丸エディタ」の中にペーストした状態である。なおTerapadではできない。改行コードは80文字のスペースに置き換わる。(調べれば改行の指定などができる可能性もある)
⑥ 画面2はスペースキー80文字をそれぞれ80文字分消去していったものである。
⑦ 画面3はそれを「.py」でセーブしたところである。秀丸エディタにはPythonのモードはないがコメントや「’」で囲われたところなどが色で示される。
⑧ このことからコード量の少ないものには構わないが多くなると実用に耐えない。
⑨ コピーコマンドはCtrl+Shift+C(WSL内で)
⑩ ペーストコマンドはCtrl+Shift+V(Win内で)
⑪ Win10Pro → WSLは基本的にできない。(もっと調べる必要があるが)これをやるには前のほうのブログで示した方法しかないのではないか。(USBメモリ経由で)
⑫ ⑪でペーストしようとすると「F12」を押した状態になる。抜けるにはもう一度「F12」を押す。

以上

画面2

画面3

↑人気ブログランキングに参加しています。よろしければ1票を!

Flaskを使ったデモの実施

Flask下で開発する各モジュールをPythonプログラム、HTML、CSS、JSでもってデモンストレーションしてみる。

Flaskを使ったデモの実施

Flask下で開発する各モジュールをPythonプログラム、HTML、CSS、JSでもってデモンストレーションしてみる。「Qiita」の記事を参照しながら最初はvimで直前ではemacsで開発した。数学のライブラリが必要な場合はCommand PromptからAtomで開発し通常のPythonはUbuntuの端末でということになる。後で整合性の観点で問題にならなければよいが。MySQL用にAccessを並行して進めているがまだ手についていない。以下短いデモプロで実施した手順を端末の画面などで説明する。

① Demo02.pyを実行(Ubuntu端末で)
② Demo02.pyで呼び出されたJSのmain.js内でalertがダイアログを表示、OKをクリックするとDemo02.py内で引数「多和田投手」が渡されdemo02.htmlの行が表示される。この時style.cssで定義された赤い文字で表示さてバックグラウンドの水色も表示される。またdemo02.htmlで合わせて定義された写真も表示される。
③ Ubuntu画面でdemo02が走った。
④ 実行を止めるにはCtrl + Cで行う。
⑤ 実行が停止された。
⑥ Demo02.htmlをdemo03.htmlとし新たにemacsでそれを編集する。
⑦ EmacsでC-zで一時的に抜ける。そしてUbuntu内でlsコマンドを実施。
⑧ 作業が終わったので「fg」コマンドでemacsに戻る。
⑨ Emacsの作業中のdemo03.htmlが表示される。

この一連の作業で今後開発を進める。

以上

↑人気ブログランキングに参加しています。よろしければ1票を!