#mynavi(機械学習の為の数学の基礎)
#setlinebreak(on);
* 概要 [#l108a900]
#html(<div style="padding-left: 10px;">)
[[numpyを使用した重回帰分析]] で実装してみた賃貸価格の推論と同じ事を scikit-learn でやってみる。
※使用するデータも同じ。
#html(</div>)
* 目次 [#q3b758bb]
#contents
- 関連
-- [[numpyを使用した重回帰分析]]
-- [[Chainerで重回帰分析をやってみる]]
* 実装 [#n9e4d382]
#html(<div style="padding-left: 10px;">)
#mycode2(python){{
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
# モデルの定義
reg_model = LinearRegression()
# データ読み込み
data = np.loadtxt("data/sample_rent1.csv", delimiter=",", skiprows=1)
x = data[:, 1:3].astype("float32") # 広さ, 築年数
t = data[:, 3:4].astype("float32") # 家賃
# 訓練データとテストデータに分割
x_train, x_test, t_train, t_test = train_test_split(x, t, test_size=0.3, random_state=0)
# 標準化
scaler = StandardScaler()
#scaler.fit(x_train)
scaler.fit(x)
x_train_scaled = scaler.transform(x_train)
x_test_scaled = scaler.transform(x_test)
# モデルの訓練
reg_model.fit(x_train_scaled, t_train)
# 精度の検証
result = reg_model.score(x_train_scaled, t_train)
print(result)
# テストデータで推論してみる
x_test_scaled = scaler.transform(x_test[:10])
result = reg_model.predict(x_test_scaled)
print(x_test[:10])
print(result)
# 任意のデータで推論してみる
x_test = np.array([[60, 10],[50, 10],[40, 10]]).astype("float64")
x_test_scaled = scaler.transform(x_test)
result = reg_model.predict(x_test_scaled)
print(x_test)
print(result)
}}
結果
#myterm2(){{
0.8561676175192562
[[56. 23. ]
[44.21 5. ]
[44.55 31. ]
[57.54 11. ]
[35. 3. ]
[14.99 33. ]
[36.3 20. ]
[51.06 26. ]
[25. 16. ]
[58.14 16. ]]
[[7.055791 ]
[6.8878646]
[5.5905004]
[7.811143 ]
[6.1403027]
[2.7608993]
[5.391461 ]
[6.44668 ]
[4.5532727]
[7.6109767]]
[[60. 10.]
[50. 10.]
[40. 10.]]
[[8.08922316]
[7.1665605 ]
[6.24389784]]
}}
#html(</div>)