使用scikit-learn训练薪资预测线性回归模型后如何预测新数据点
已训练scikit-learn线性回归模型对新数据点的预测操作
核心原理
完成fit()训练后的linear_regressor实例,会永久保存从原数据集学到的拟合参数(特征权重、模型截距),不需要重新训练,只要按照模型要求的输入格式传入新特征值,直接调用predict()方法就能得到对应预测结果。
常见报错预警
scikit-learn的监督学习模型统一要求输入特征为二维数组结构,必须和训练时使用的特征维度完全匹配,新手最容易出现两类格式错误:
- 直接将单个数值(比如代表15年工作经验的数字15)传入
predict()方法 - 传入未做维度调整的一维数组(比如
np.array([12, 15, 20]))
以上两种写法都会直接触发维度不匹配报错Expected 2D array, got 1D array instead。
可直接复用的代码(在你现有代码基础上追加即可)
在你现有代码完成模型拟合、绘制完基础散点图和拟合直线后,补充对应预测逻辑:
- 单样本预测(以预测15年工作经验的薪资为例)
# 构造符合格式要求的新特征输入 # 将单个数值15转换为和训练X一致的二维结构 new_single_input = np.array([15]).reshape(-1, 1) # 调用已训练的模型生成预测 single_pred = linear_regressor.predict(new_single_input) # 输出结果即为你预期的 [167005.32889087] print(single_pred)
- 批量多新样本预测(比如同时预测10年、15年、22年工作经验的薪资)
# 批量新数据直接按二维嵌套结构构造,无需额外reshape new_batch_input = np.array([[10], [15], [22]]) batch_pred = linear_regressor.predict(new_batch_input) print(batch_pred)
注意:做新样本预测时,绝对不要重新调用
fit()方法重复训练模型,已训练完成的模型实例已经保存了全部拟合参数,重复训练只会浪费算力,操作不当还可能引入拟合偏差。
可选的效果验证
可以将新预测的点直接叠加到之前的拟合结果图上,直观验证预测效果:
plt.scatter(new_single_input, single_pred, color='green', s=120, label='15年经验薪资预测值') plt.legend() plt.show()
内容的提问来源于stack exchange,提问作者Ua9612
相关产品推荐
相关产品推荐

