![見出し画像](https://assets.st-note.com/production/uploads/images/44459310/rectangle_large_type_2_650ef7d0af47bc03a50086dba7d07b57.png?width=1200)
【線形回帰】
まずは、こんな散布図だった場合に使ったほうがいいよという事で。
公開されている、ボストン市郊外の地域別住宅価格のデータセットを取り込みます。
from sklearn.datasets import load_boston
boston = load_boston()
import pandas as pd
boston_df = pd.DataFrame(boston.data, columns = boston.feature_names)
boston_df['MEDV'] = boston.target
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(boston_df['RM'], boston_df['MEDV']) # 平均部屋数と住宅価格の散布図をプロット
plt.title('Scatter Plot of RM vs MEDV') # 図のタイトル
plt.xlabel('Average number of rooms [RM]') # x軸のラベル
plt.ylabel('Prices in $1000\'s [MEDV]') # y軸のラベル
plt.grid()
散布図を見ると、相関関係がある。という事が分かります。その場合、線形回帰が使える。
線形回帰の線は、相関がある傾きに線を引く時、全てのプロットへの距離が一番小さく抑えられる角度の線。
その離れた距離は「二乗平均誤差」という計算式で表すことが出来る。
X = [[10.0], [8.0], [13.0], [9.0], [11.0], [14.0], [6.0], [4.0], [12.0], [7.0], [5.0]]
y = [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]
試しに散布図を作成すると。
plt.scatter(X, y, color = 'blue')
相関が有るので、意味を持ちそうです。
plt.scatter(X, y, color = 'blue')
plt.plot(X, model.predict(X), color = 'red')
from sklearn.linear_model import LinearRegression
#学習させたいモデルをimport
model = LinearRegression()
#クラスからオブジェクトの生成
model.fit(X, y)
#学習させる
print(model.intercept_) # 切片
print(model.coef_) # 傾き
y_pred = model.predict([[12], [14]])
print(y_pred)
12のところが大体yでは9。14のところは10となりました。