導入
現実の予測は、手がかりが1つとは限りません。「広さ」だけでなく「駅からの距離」も使って家賃を予測する――複数の特徴量を使う回帰を重回帰と呼びます。
説明
X の列を増やすだけで、線形回帰はそのまま複数の特徴量を扱えます。
import numpy as np
from sklearn.linear_model import LinearRegression
# 各行: [広さ(㎡), 駅からの距離(分)] → 家賃(万円)
X = np.array([
[20, 5],
[25, 10],
[30, 3],
[35, 15],
[40, 8],
])
y = np.array([7.0, 7.5, 9.5, 9.0, 11.0])
model = LinearRegression()
model.fit(X, y)
print("係数:", np.round(model.coef_, 3)) # [広さの係数, 距離の係数]
print("切片:", round(model.intercept_, 2))
# 広さ32㎡・駅から7分の家賃を予測
pred = model.predict([[32, 7]])
print("予測家賃:", round(pred[0], 2), "万円")
係数が特徴量ごとに1つずつ出ます。広さの係数はプラス(広いほど高い)、距離の係数はマイナス(遠いほど安い)になるはずです。符号を見るだけで、各要素が家賃をどちらに動かすか読み取れます。
やってみよう
予測したい物件の条件 [[32, 7]] を、[[40, 3]](広くて駅近)や [[20, 20]](狭くて駅遠)に変えて、家賃の予測がどう動くか試しましょう。
演習
上のモデルで、広さ28㎡・駅から10分の物件の家賃を予測して print で表示してください。
ヒント1を見る
model.predict([[28, 10]])。