近似直線を描く
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 37/64。
2つの数値で当てはまりを表せますが、データに沿っているかどうかはグラフでしか確認できません。あるキッチンで、やかんを6回沸騰させる時間を計りました。散布図と同じaxに直線を描きます。
liters = np.array([0.5, 0.8, 1.0, 1.2, 1.5, 1.7])
minutes = np.array([1.6, 2.4, 2.7, 3.3, 3.9, 4.5])
slope, intercept = np.polyfit(liters, minutes, 1)
xs = np.linspace(liters.min(), liters.max(), 50)
fig, ax = plt.subplots()
ax.scatter(liters, minutes, label="Boils")
ax.plot(xs, slope * xs + intercept, color="C1", label="Fit")
ax.legend()
plt.show()xs は最小の x から最大の x までを扱うため、線はデータの始点から終点まで引かれます。
モデルの予測をデータ上に描画するのが、モデルが妥当なことを学習したかを確かめる最も手早い方法です。点から外れた線は、当てはめに問題があることを意味します。
チャレンジ
中級ビルの管理者が、エレベーターの乗車12回について、移動したfloorsと所要時間secondsを計測しました。スターターコードでは、タイトルとラベルが設定されたグラフを準備します。
floorsからsecondsを予測する直線を当てはめます。- 乗車データを
Ridesというラベル付きの散布図で描き、最少階数から最多階数までの直線をFitというラベル付きで描きます。 - 凡例を追加して、グラフを表示します。
何も出力されません。Coddyがグラフを説明します。別のビルのグラフは次のようになります。
自分で試してみよう
import numpy as np
import matplotlib.pyplot as plt
floors = np.array([3, 7, 1, 12, 5, 9, 15, 2, 10, 6, 13, 8])
seconds = np.array([15.3, 27.0, 12.4, 36.0, 19.5, 28.8, 44.9, 12.7, 33.2, 19.4, 41.7, 27.0])
# 以下の行は変更しないでください
fig, ax = plt.subplots()
ax.set_title("Elevator Rides")
ax.set_xlabel("Floors")
ax.set_ylabel("Seconds")
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ