scikit-learnで、初めてのAIモデルを作る
ここまでの単元で、「学習」「予測」「モデル」「一次関数」「ベクトル」という言葉を学んできました。いよいよこれらを組み合わせて、実際に動くAIモデルを作ってみましょう。
使うのは scikit-learn という、機械学習で最もよく使われるPythonライブラリの一つです。線形回帰は、次のようにとても短いコードで実行できます。
from sklearn.linear_model import LinearRegression
import numpy as np
# 勉強時間(X)と、テストの点数(y)のデータ
X = np.array([[1], [2], [3], [4], [5]]) # 入力は2次元配列で渡す
y = np.array([50, 55, 65, 70, 80])
model = LinearRegression()
model.fit(X, y) # 学習:データから最適なa, bを見つける
model.predict([[6]]) # 予測:勉強時間6時間のときの点数を予測 → [86.5]
model.predict([[6]])[0] # 最初の1つを取り出す → 86.5
model.fit(X, y)が「学習」、model.predict(...)が「予測」に対応しています。以前学んだ「学習」と「予測」という2つの段階が、fitとpredictという2つのメソッドにそのまま対応していることに注目してください。
predictは、たくさんのデータをまとめて予測できるように、結果を 配列([86.5]のような並び)で返します。1件だけ予測したときは、最後に[0]を付けて「0番目(最初)の値」を取り出すと、ただの数値として扱えます。リストのscores[0]と同じ書き方です。
Xが2次元配列([[1], [2], ...])になっている点に気づいたでしょうか。これは、scikit-learnが「複数の特徴(入力の項目)を扱えるように」、1件のデータを常にベクトルとして扱う設計になっているためです。特徴が1つ(勉強時間だけ)でも、[1]のようにベクトルの形で渡します。