導入
理屈より先に、まず動かしてみましょう。「勉強時間から試験の点数を予測する」モデルを作ります。
説明
やることは3ステップだけです。データを用意 → 学習(fit)→ 予測(predict)。
import numpy as np
from sklearn.linear_model import LinearRegression
# 勉強時間(時間)と、そのときの点数
X = np.array([[1], [2], [3], [4], [5], [6]]) # 特徴量(入力)
y = np.array([40, 50, 55, 65, 78, 85]) # 正解(出力)
model = LinearRegression() # モデルを用意
model.fit(X, y) # データから学習する
# 7時間勉強したら何点になりそう?
pred = model.predict([[7]])
print("7時間の予測点:", round(pred[0], 1))
model.fit(X, y) の1行が「学習」です。過去のデータ(勉強時間と点数の組)を渡すと、モデルが「時間が増えると点数も増える」という関係を自分でつかみます。あとは model.predict() に新しい時間を渡せば、未知の点数を予測してくれます。
人間が「1時間ごとに何点上がる」と計算式を書いたわけではない、という点が大切です。データを見せただけでモデルが規則を学びました。これが機械学習です。
やってみよう
model.predict([[8]]) や [[10]] で、別の勉強時間の予測も出してみましょう。y の点数を書き換えると、予測がどう変わるでしょうか。
演習
上のモデルで、勉強時間が0時間のときの予測点を print で表示してください。
ヒント1を見る
model.predict([[0]]) の結果を表示します。