【Python】10行で書ける機械学習超最小構成プログラム【機械学習】

【Python】10行で書ける機械学習超最小構成プログラム【機械学習】

はじめに

コジマです。

機械学習にハマってからというもの、楽しい反面結構難しいものだなと思っているわけです。

チュートリアル等色々ありますが、
始めたばかりは慣れない言葉もたくさんあります。

この記事ではアヤメのデータを最近傍法のモデルに当て込んで
機械学習するポピュラーな例を利用して

それを実現するために超必要最低限なサンプルソースを作成し、
解説していきたいと思います。

Pythonはライブラリ充実しすぎてて簡単に書けますが
ブラックボックスになりやすいです。

これ以上の深掘りは絶対必要なんですが、
本や動画では前置きやその他覚えること多くて
結局何が大事なのかわからなくなってしまうことがあります。

機械学習始めたけど、色々用語がよく分からない。
学びたてでもとりあえず簡単に動かせるコードが見たい!
そんな人に見てほしい記事です。

実際どんな流れなのか

流れとしてはこんな感じ

  1. データを用意する
  2. 訓練データとテストデータに分ける
  3. 学習のためのモデルを用意する
  4. テストデータを予測させる
  5. モデルの評価をする

となります。

あくまで最小構成です。
掘り下げたらこんなもんじゃ済まないです。

実際に書いたコードはこちら

実際こんだけ。

少しだけ掘り下げますが、補足程度です。
より細かい内容は別途で記事を書く予定です。
あくまで全体像を掴むつもりで読んでください。

少しだけ掘り下げる

データを用意する

scikit-learnはsklearnという名前でライブラリを使用することができます。
datasetsモジュールでいくつかサンプルのデータが提供されています。
その中の一つがアヤメのデータです。

load_iris()関数を実行するだけでアヤメのデータを得ることができます。

他にもワインのデータや手書き文字のデータなんかもあります。

訓練データとテストデータに分ける

train_test_split()関数に先ほど読み込んだデータを入れ込むを
訓練データとテストデータに分けてくれます。

75%が訓練データ、25%がテストデータになっています。

学習のためのモデルを用意する

k-最近傍法というモデルを使用しています。
k=1のときはxy平面にプロットしたデータの一番近い距離にあるデータと同じものだって
やるやり方ですね。

テストデータを予測させる

KNeighborsClassifierクラスのpredict関数でモデルからデータを予測してくれます。
機械学習の最大の核の部分ですね。この一行がいい感じになんとかしてくれます。

モデルの評価をする

numpyのmean関数を使用して予測したデータと実際のテストデータを比較して
どのくらいの精度を持っているか調べます。

今回のケースでは0.9736…と出ているので
約97%の精度が出たことになります。

さいごに

参考図書

この本を参考にしました。

わざと核になる部分のみ抽出して
概要を把握し、必要最低限の機械学習のプログラムが書けるようにやってみました。

ここからピンポイントに掘り下げた記事も更新していく予定です。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


Pythonカテゴリの最新記事