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

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS