概要

numpyを使用した重回帰分析 で実装してみた賃貸価格の推論と同じ事を scikit-learn でやってみる。
※使用するデータも同じ。

目次

実装

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)

結果

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]]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-11-22 (金) 05:25:26 (1617d)