Menu
CoddyTech

近似直線を描く

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 までを扱うため、線はデータの始点から終点まで引かれます。

やかんで沸かした6回分の水を点で示し、水量(リットル)に対する沸騰までの時間(分)を表しています。1.6分から4.5分へ上昇し、0.5リットルから1.7リットルにかけてオレンジ色の近似直線が点を通っています

モデルの予測をデータ上に描画するのが、モデルが妥当なことを学習したかを確かめる最も手早い方法です。点から外れた線は、当てはめに問題があることを意味します。

challenge icon

チャレンジ

中級

ビルの管理者が、エレベーターの乗車12回について、移動したfloorsと所要時間secondsを計測しました。スターターコードでは、タイトルとラベルが設定されたグラフを準備します。

  1. floorsからsecondsを予測する直線を当てはめます。
  2. 乗車データをRidesというラベル付きの散布図で描き、最少階数から最多階数までの直線をFitというラベル付きで描きます。
  3. 凡例を追加して、グラフを表示します。

何も出力されません。Coddyがグラフを説明します。別のビルのグラフは次のようになります。

「Elevator Rides」というタイトルのグラフ。2階で14秒から20階で51秒まで上昇する8個の点、最初の点の階数から最後の点の階数まで引かれた近似直線、そしてRidesとFitを示す凡例

自分で試してみよう

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")

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ