1. 資料集
這裡主要采用sklearn自帶的波士頓房價預測的資料集
from sklearn.datasets import load_boston
boston = load_boston()
data = boston['data'] # shape=(506, 13)
target = boston['target'] # shape=(506,)
# print(boston['DESCR'])
2. 劃分資料集
劃分資料集,将樣本劃分為訓練集和驗證集
from sklearn.model_selection import train_test_split
train_data, test_data, train_target, test_target = train_test_split(data, target, test_size=0.2, random_state=42)
# 訓練集和測試集的shape:(404, 13)與 (102, 13)
對訓練集進行标準化,同時将标準化的規則應用到驗證集
from sklearn.preprocessing import StandardScaler
std = StandardScaler()
train_data_std = std.fit_transform(train_data)
test_data_std = std.transform(test_data)
3. 構模組化型
regr = MLPRegressor(solver='adam', hidden_layer_sizes=(50, 50), activation='tanh', max_iter=5000).fit(train_data_std, train_target)
y_pred = regr.predict(test_data_std)
4. 評價回歸模型
關于回歸模型的評價名額如下:
方法名稱 | 最優值 | sklearn函數 |
---|---|---|
平均絕對誤差 | 0.0 | sklearn.metrics.mean_absolute_error |
均方誤差 | 0.0 | sklearn.metrics.mean_squared_error |
中值絕對誤差 | 0.0 | sklearn.metrics.median_absolute_error |
可解釋方內插補點 | 1.0 | sklearn.metrics.explained_variance_score |
R 2 R^2 R2值 | 1.0 | sklearn.metrics.r2_score |
其中,平均絕對誤差、均方誤差、中值絕對誤差的值越接近0,模型性能越好。可解釋方內插補點和 R 2 R^2 R2值越接近1,模型性能越好。
此處采用平均絕對誤差作為評價名額
error = mean_absolute_error(test_target, y_pred)
print(error) # 2.3726167664920306
以折線圖展示預測值與真實值
plt.figure()
plt.plot(range(len(y_pred)), y_pred, color='blue')
plt.plot(range(len(y_pred)), test_target, color='red')
plt.show()