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