Python初心者が独学で「上級者」を目指すblog

Pythonの独学習得を目指すプログラミング初心者のアラサーが奮闘するブログです。

Pythonによる機械学習入門~その03~

 こんにちは、およちゃんです。

 今日は以下の教材を使って、引き続き、機械学習の勉強を進めていった結果を記事にしたいと思います。

 

スッキリわかるPythonによる機械学習入門 (スッキリシリーズ)

スッキリわかるPythonによる機械学習入門 (スッキリシリーズ)

  • 作者:須藤秋良
  • 発売日: 2020/10/16
  • メディア: 単行本(ソフトカバー)
 

 f:id:oyochan:20210324125631p:plain

 まずは、下のように打ち込んでみました。csvデータから欠損値の有無等を調べています。

 

f:id:oyochan:20210328214702p:plain

 

 こいつを実行してみます。Visual Studio Codeだと実行結果を表示する画面が小さいので、Windows PowerShellで実行。

 

f:id:oyochan:20210328215752p:plain

 

 In[0]では、データフレームを作成して、その頭5行と後ろ5行を表示。

 In[1]では、ある列の要素の数を集計。

 In[2]では、欠損値があるかどうかの調査。Trueはその位置に欠損値がある状態を表しています。

 In[3]では、列ごとに欠損値が存在するかどうかを判定しています。欠損値があれば、Trueとなります。

 In[4]では、列ごとの欠損値の数を表示させています。

 

 このような感じで、csvデータの中身を調査しました。次は同じcsvデータを使って、下のように打ち込んでみます。


f:id:oyochan:20210328220529p:plain

 

 このコードの実行結果は以下のとおりです。

 

f:id:oyochan:20210328221222p:plain

f:id:oyochan:20210328221307p:plain

 

 各パートの説明ですが、コード中のコメントでも記載している通り、

 In[0]では、csvデータの読み込み、データフレームの作成。

 In[1]では、欠損値のある行を削除して、新たなデータフレームを作成して表示。

 In[2]では、まずは、各列の平均値を表示。元のデータフレームの欠損値に平均値を穴埋めして、新たなデータフレームとして表示。ついでに本当に欠損値がなくなっているか確認のため、欠損値の有無を表示(Falseのため、欠損値は無し)。

 In[3]では、元のデータフレームを表示し、各列の分散と標準偏差を表示。

 

 このパートでは、機械学習というよりも、各コマンドの試験・確認作業です。ばっちり動作してくれているので、ここまでは問題なさそうです。

 

 次からは、いよいよ機械学習の始まりです。次のようにコードを打ち込んでみました。

f:id:oyochan:20210328222213p:plain

 

 少し長めの記述になりましたが、実行結果は以下のとおりです。

 

f:id:oyochan:20210328222604p:plain

f:id:oyochan:20210328222744p:plain

 

 In[0]では、諸々インポートし、csv読み込みのデータ作成、欠損値の穴埋めを行います(前処理)。特徴量と正解データを分類し、決定木の深さを2で設定。学習範囲をデータの7割、テストデータを3割で設定。実際に学習させて、テストデータの分析をさせた正解率が先ほどの画像に反映されています。この場合の正解率は、95.55…%でした。

 In[1]では、In[0]で作成したモデルを保存したり読み込んだりしています。サンプルデータを適当に作り、それを学習したモデルで分析し、推測した結果を表示させています。

 In[2]では、作成したモデルの決定木の形や諸々のデータを表示させています。

 In[3]では、決定木の描画を行っています。描画の仕様上、日本語は対応していないので、アルファベットに直し、図で表示させています。

 

 今回のモデル作成は、ほぼ写経のように記述していました。これをそらで書けるようになるととても便利なのだろうなと思います。コマンドがいろいろあるので、覚えるのが大変です(汗

  今回の機械学習入門の書籍を一通り終えたら、もう一周出来たらいいなと思っています。その時に完璧に覚えられれば、きっと何かの役に立つはず、、と思っています。

 Pythonのコードをさらっとかけるようになると格好いいなーと思うんですよね。。

 

 機械学習の基礎の基礎はなんとなく理解したつもりです。ここまでは「分類」を取り扱ってきましたが、次回からは「回帰」をやっていこうと思います。

Pythonによる機械学習入門~その02~

 こんにちは、およちゃんです。

 今日は、pandasをメインに、初歩的なコードを入力していきたいと思います。

f:id:oyochan:20210324125631p:plain

 まずは、Visual Studio Codeを起動。

 Python機械学習の本を読み進めながら、写経していきます。基本的には前回の記事でご紹介した書籍をベースに進めています。

www2.oyochan.com

 

 実際に打ち込んでみます。まずは、pandasを使って以下のように打ってみました。

f:id:oyochan:20210324130111p:plain

 

 Visual Studio Codeのスクショだとコードが入りきらなかったので、拡張機能のPrintCodeを活用して貼り付けました。

 こいつの実行結果は、、、

f:id:oyochan:20210324132213p:plain

 

 出ました!よかったです。Visual Studio Codeだと結果が入りきらなかったので、Windows PowerShellを使いました。

 ちなみに何のデータかというと、「東京都オープンデータカタログサイト」からWi-Ficsvデータをお借りしました。ありがとうございます、東京都の職員の方。

東京都オープンデータカタログサイト

 

 次はこんな感じで打ち込んでみました。

f:id:oyochan:20210324131521p:plain

 

これもパート分けしているのですが、一気に実行してみました。

f:id:oyochan:20210324131650p:plain

 

 コードの中にある「ex1.csv」は書籍の付録としてついてきたものです。それを活用させていただいております。

 結果はすべてうまくいきました。何とかcsv読み込みやデータフレームの作成の初歩はできるようになったかと思います。

 

 今日はここまでで満足しています。なんかこの学習分野って、この前までやっていた基礎編の内容(関数、クラスなど)が全然出てきませんね。。中級者クラスになってくるとまた出てくるのでしょうか。学んだことを生かしてコードを打ち込みできると楽しいのですが、今後に期待したいです。

Pythonによる機械学習入門~その01~

 こんにちは。およちゃんです。

 前回の記事で、pandasなどのライブラリが上手く動作せず、ようやく解決した旨記載しましたが、今回から本格的に機械学習入門ということで進めていけたらと思っています。

 

f:id:oyochan:20210308130550p:plain

 

 今回も、Visual Studio Codeを起動。前回、ライブラリが上手く読み込めなかったときは、Jupyter Notebookにしようかとても悩みましたが、引き続き、Visual Studio Codeを使っていきます。

 ちなみに、機械学習の入門の入門に入っていくにあたって、Visual Studio Code拡張機能を追加しました。

 

f:id:oyochan:20210321222213p:plain


拡張機能、超便利!

簡単に機能説明。

 

  • Bracket Pair Colorizer 2:カッコを色付けしてくれます。Pythonのプログラミングはカッコが多くなりがちなので、どことどこが対応しているかが分かりやすくて良いです。
  • Excel ViewercsvなどをExcelなどのソフトで表示しているようにできる機能です。
  • indent-rainbow:インデントを色付きで表示してくれます。見栄えがきれいになります。
  • Japanese Language Pack for Visual Studio CodeVisual Studio Codeを日本語化してくれる機能です。
  • JupyterPythonを始めるにあたって入れたものです。機能の詳細は不明です、すみません。
  • PrintCode:自分が打ち込んだプログラムをほぼ表示されている通りにプリントアウトすることが出来る機能です。プログラムを共有したりするときに大変便利です。
  • Python:これがないとPythonができません。
  • Rainbow CSVcsvデータを色付きで表示できる機能です。列ごとに色分けされているので、たくさんデータがあっても大変見やすくなります。
  • Visual Studio IntelliCode:予測変換を出してくれる賢い機能です。
  • vscode-icons:拡張子ごとにファイル名の横にアイコンを表示してくれます。アイコンを見ただけで、どの拡張子のファイルかが分かるので、大変便利です。
  • zenkaku:全角スペースの位置に色を付けてくれる機能です。あまり全角スペースを使う機会はないですが、あると見やすいので入れています。

 

 こんな感じでセッティング。そして、今回から勉強でお世話になる書籍がこちら。

 

スッキリわかるPythonによる機械学習入門 (スッキリシリーズ)

スッキリわかるPythonによる機械学習入門 (スッキリシリーズ)

  • 作者:須藤秋良
  • 発売日: 2020/10/16
  • メディア: 単行本(ソフトカバー)
 

 

 この本の内容を見ながら、勉強を進めていきます。

 今回は導入編ということで、この辺で。次回から実際にVSCodeに打ち込んでいきたいと思います。

Pythonで機械学習の勉強をしようと思ったらVSCodeが動作しなかった件

 こんにちは、およちゃんです。

 今週あまり更新できなかった理由を今日は記事にしてみます。

 

 「基本編は終わったし、機械学習に手を付けてみよう」と思い、本を購入。読み進めて、pandasをインポートするようなプログラムを書き、VSCodeで実行してみた。

 

 実行!

 

 ・・・

 

 無反応( ^ω^)・・・

 

 どうなっているんだ…???

 

 

 今までPythonは何事もなく動作していて、普通のプログラムは動くのに、なぜpandasは無反応なんだ!?と思い、ネット検索を始めます。

 

 しかしネットで検索すればするほど、設定いじりやなんやかんやで余計にドツボにはまり、、、一時は、普通のプログラムすら動作しなくなってしまう始末。。。

 

 日常生活でも「(なぜ動かないんだろう・・・)」と考えるようになってしまうほど、僕はドツボにはまってしまっていました。

 

 VSCodeをインストールしなおしたり、Anacondaをインストールしなおしたり、したものの一向に改善せず。

 もうpandasは動かせないのかな、とあきらめかけたその時。とあるサイトに出会います。それが、以下のサイトです。

 

thunss.com

 

 もういくつかのサイトを巡った後に出会った、このサイトの手法を試してみることにしました。半分ダメ元でした。

 しかし!このサイトの解決方法を試し、、

 

f:id:oyochan:20210319175413p:plain

 

 上のプログラムを打ち込み、動作するか試したところ、、

 

f:id:oyochan:20210319175548p:plain

 動いた!!!

 やったーーー!!!!!!

 

f:id:oyochan:20210319180315p:plain

 

 まさに歓喜の瞬間。やっと、動いてくれた。。。という達成感が半端なかった。

 

 ちなみにpandasも動いてくれました。

 

f:id:oyochan:20210319175808p:plain

 

 からの。。。

 

f:id:oyochan:20210319175858p:plain

 

 でした。

 これでようやくスタート地点に立つことが出来ました。

 解決するまで3,4日もかかってしまいました。

 

 次回からは、超入門レベルですが、機械学習等々を学んでいきたいと思います。よろしくお願いします。

Pythonの簡単なモジュールなどで遊んでみた

 こんにちは。およちゃんです。

 今日は、いろんなモノを使って遊んでみようと思います。

 

f:id:oyochan:20210308130550p:plain

 

 いつものように、Visual Studio Codeを起動。

 まずは、Pythonテキストエディタを作成してみます。

 

f:id:oyochan:20210315174550p:plain

 

 適当にテキストを作成し、実行。

 

f:id:oyochan:20210315174801p:plain

 

 無事、作成されました。このテキストに追記してみます。

 

f:id:oyochan:20210315174932p:plain

 

 実行すると、、、

 

f:id:oyochan:20210315175038p:plain

 

 無事、文章が追加されました。

 次は、csvモジュールで同じように遊んでみたり、osモジュールでフォルダーの情報を見てみたりしました。実行するとどれもエラー無くちゃんと表示されました。

 最後は、datetimeモジュールで、日付などを表示させてみることにしました。今後Pythonでプログラムを勉強していく中で、datetimeモジュールはゆくゆくは使えそうですよね。

 

f:id:oyochan:20210315175423p:plain

 

 実行した結果は、、、

 

f:id:oyochan:20210315175514p:plain

 

 無事に表示されました。このモジュールはゆくゆくは使えそうだなーと思いますので覚えておきたいところです。

 

 私はPython初心者ですが、モジュールには種類がたくさんあるようで、これらを使いこなせるようになればなるほど、Pythonで出来ることの幅が広がっていく気がしました。

 たくさんありすぎて何から手を付ければよいか、という感じですが、自分がやりたいこと(まずは機械学習とかデータ分析ですかね)を目的に、必要なモジュールの知識を手に入れていきたいと思います。

 

 一応、今回の記事までが基礎編的な内容で、次回からは機械学習の導入に入っていければと考えています。

 引き続き、よろしくお願いいたします。

Pythonで「クラス」の初歩を記述してみる

こんにちは。およちゃんです。

今日はPython初心者の最初の鬼門、「クラス」を勉強してみようと思います。

まずはいつもと同じように、Visual Studio Codeを起動。

f:id:oyochan:20210308130550p:plain

 

まずは、参考書を参考に、初歩として以下のとおり適当に遊んでみました。

 

f:id:oyochan:20210313150015p:plain

 

実行結果は、、、

 

f:id:oyochan:20210313150127p:plain

 

はい、簡単です。

クラスは途中で何を書いているか分からなくなってきます。関数とはまた違う難しさがありますね。

 

次は、コンストラクタを使ってみました。

 

f:id:oyochan:20210313150545p:plain

 

実行結果は、、、

 

f:id:oyochan:20210313150436p:plain

 

コンストラクタを使った記述の方が分かりやすい気がしました。かなり面倒な記述ですが、データ量が増えてくると便利なのでしょうね。

 

次もコンストラクタを使って遊んでみました。

 

f:id:oyochan:20210313151041p:plain

 

今回は結果をリストに落とし込んでみました。

実行結果のスクショは省きますが、無事['red','yellow','blue']と表示されました。

 

なんとなく理解してきたところで、最後は派生クラスの記述に挑戦。

 

f:id:oyochan:20210313151352p:plain

 

食べ物やら地名やら教科やら入り乱れていますが、実行すると

['国語','社会','算数','追加:理科']

と表示されました。エラー無く表示されると楽しいですね~~

今回はリストの時に学んだ「.append()」や「.insert()」を取り入れてみました。

 

とまあこんな感じで、Pythonのクラスで遊んでみました。

結構いろいろできて楽しいです。出来ることが増えてきたのと、複雑になってきてパズルゲームみたいで面白いです。

あとはVisual Studio Codeが使ってて勝手に色を付けてくれるのが、とてもいいですね。ほかのテキストエディタでもそうなのかもしれませんが、大変見やすく編集しやすいので助かります。

 

最近平日が仕事で忙しく、なかなかPythonと触れ合えていませんが、今後も引き続き、勉強を進めていきます。

Pythonの関数をVisual Studio Codeで記述してみる

 こんにちは。およちゃんです。

 今回は、Pythonの関数で遊んでみようかと思います。今回も基礎の復習を行います。

 

f:id:oyochan:20210308130550p:plain

 

 まずは、Visual Studio Codeを起動。簡単な関数を記述してみます。

 

f:id:oyochan:20210309215408p:plain

 

 こんな感じで記述。実行してみると、

 

f:id:oyochan:20210309215455p:plain

 

 とりあえず、動作確認。個数入力。

 

f:id:oyochan:20210309215617p:plain

 

 個数を入力すると、★が6個ちゃんと表示されました。

 まあ、ここまでは楽勝ですね。

 次は以下のように記述。

 

f:id:oyochan:20210309215846p:plain

 

 文字列入力を求め、文字列の入力があれば、その文字列を指定された個数表示するのと、文字列に関係なく、指定された数だけ★を表示するのと2つ書いてみました。

 

f:id:oyochan:20210309220221p:plain

 

 文字列「あ」を5つと、★を5つ表示させることができました。

 これも楽勝でしたね。

 

 関数には、デコレータやジェネレータの機能がありますが、今回は試しませんでした。正直、デコレータとジェネレータは、まだ勉強している最中の概念なので、もう少しちゃんと習得してから、ブログの記事にしたいなと思います。

 今回は、まだ前回の記事の方が難易度高かったのではないかと思うくらい簡素な内容でした。

 

 今回の記事では、とても簡単な関数で遊んでみましたが、プログラムが正常に動作すると楽しいですね!またしても、関数「def」の行末に「:」を付け忘れたり、初歩的なミスでエラーが多かったです。まだまだ初心者ですね。

 

 次回は「クラス」で遊んでみたいなと思います。

 もう少しPython基礎編が続きますので、お付き合いくださいませ。