直線で予測する
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 38/64。
当てはめた直線は、小さな予測マシンです。新しい x を入力すると、y が返ってきます。子犬の体重を生後8週から20週まで測りました:
weeks = np.array([8, 10, 12, 14, 16, 18, 20])
kg = np.array([3.1, 4.0, 5.2, 6.1, 7.0, 8.2, 9.1])
slope, intercept = np.polyfit(weeks, kg, 1)
new_weeks = np.array([15, 52])
print(np.round(slope * new_weeks + intercept, 1))これは [ 6.6 25.2] を出力します。第15週はデータの範囲内です。第52週は範囲外で、犬の成長が止まった後も線は上昇し続けます。
データの範囲外を予測することは外挿であり、リスクがあります。モデルが信頼できるのは、学習に使ったものと同様の入力に対してのみです。まず確認しましょう:
week = 52
print(week >= weeks.min() and week <= weeks.max())これはFalseを出力します。
チャレンジ
中級ろうそくが燃えるにつれて、0時間目から6時間目まで毎時間測定しました。hoursとheightはcm単位です。プログラムはnew_hoursを読み取ります。
hoursからheightを予測する直線を当てはめます。new_hoursに対する予測値を、小数点以下2桁に丸めて出力します。new_hoursがデータの時間範囲内にあるかどうかを、両端を含めて出力します。
入力が4.5の場合:
Predicted height: 13.07 cm
Inside the data: yes自分で試してみよう
import numpy as np
hours = np.array([0, 1, 2, 3, 4, 5, 6])
height = np.array([20.0, 18.4, 17.1, 15.3, 13.9, 12.2, 10.8])
new_hours = float(input())
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ