Scikit 模型无法正确预测序列

数据挖掘 scikit-学习 回归 熊猫 数据科学模型 毫升
2022-02-18 16:15:01

我正在尝试使用 scikit-learn 创建一个回归模型来预测汽车价格。输入数据是,汽车型号(装饰),使用的公里数,类似汽车的过去转售价和二手车的年龄。我试图预测汽车的未来转售价格。

我已经完成了数据的预处理。我尝试过使用 ARDRegression、RandomForestRegressor,最后是 MLPRegressor。但预测模型似乎预测不好,预测结果似乎超出了训练数据的范围。

示例:如果实际值(实际售价)为 748077.0 但预测值为 1352960

可能我犯了一些错误,但我无法弄清楚它是什么。我已经简化了代码以专注于预测部分并共享了链接。

有人可以指导我。

这是 google colab notebook 链接

更新:反转数据帧的索引会导致预测的总变化。

1个回答

我不使用 Python,所以我无法确切告诉您发生了什么,但我快速查看了您的数据:

显示相关特征的数据点

几点说明:

  • 看起来绝大多数点都是通过插值人工创建的。为什么不呢,但这不太可能反映价格变化的现实:我预计汽车价格的真实数据集中会有更多的变化/噪音。
  • 无论如何都不需要向数据集添加这么多点。有了所有这些数据,甚至不需要训练模型,因为几乎所有可能的实例都已经在数据中了。
  • 在我看来,预测年份有些奇怪:通常预测年份越高,价格下跌的越多,对吧?这里第 0 年完全没有减少,第 1 年的减少幅度最大,...,第 4 年几乎没有减少。这可能会混淆模型。
  • 因为它主要是一个人工数据集,所以关系非常简单:基本回归future_price = past_price * a + b已经给出了很好的结果,并且在添加prediction_year特征时可以完美地学习关系。至少 MLP 和随机森林应该给出近乎完美的结果。
  • 通过快速查看代码,我怀疑问题与缩放有关。我不确定那里应该发生什么,因为我不熟悉这些功能:可能是预测值最后需要“未缩放”?无论如何,我认为这里根本不需要缩放它。

为了记录,图表是用 R 完成的,如下所示:

library(ggplot2)
d<-read.table('interpolated_dataframe.csv',sep=',',header=TRUE)
ggplot(d,aes(past_price,future_price,colour=factor(prediction_year)))+geom_point()