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

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

はじめに

コジマです。

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

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

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

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

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

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

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

実際どんな流れなのか

流れとしてはこんな感じ

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

となります。

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

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

実際こんだけ。

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

少しだけ掘り下げる

データを用意する

#datasetsモジュールのload_iris関数をインポートする
from sklearn.datasets import load_iris
#アヤメのデータをロードする
iris_dataset = load_iris()

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

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

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

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

#訓練データとテストデータに分ける
from sklearn.model_selection import train_test_split
#75%が訓練データ、25%がテストデータとなる
X_train, X_test, y_train, y_test = train_test_split(
    iris_dataset['data'], iris_dataset['target'], random_state = 0)

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

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

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

#k-最近傍法を使う(k=1)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 1)
#訓練データを使って予測のためのモデルを作成する
knn.fit(X_train, y_train)

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

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

#予測を行う
y_pred = knn.predict(X_test)

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

モデルの評価をする

#モデルの評価をする
import numpy as np
print(np.mean(y_pred==y_test))

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

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

さいごに

参考図書

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

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

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

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

もっと学びたい人はこちら

Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!

Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス

プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning

気になった人はぜひ見てみてくださいね!

以上、コジマでした。


Pythonカテゴリの最新記事