天天看點

sklearn神經網絡回歸示例1. 資料集2. 劃分資料集3. 構模組化型4. 評價回歸模型

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()
           
sklearn神經網絡回歸示例1. 資料集2. 劃分資料集3. 構模組化型4. 評價回歸模型

繼續閱讀