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のコードをさらっとかけるようになると格好いいなーと思うんですよね。。

 

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