天天看点

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. 评价回归模型

继续阅读