预期数组和预测数组最终在 scikit learn 随机森林模型中是相同的


data = df_train.as_matrix(columns=train_vars)  # All columns aside from 'output'
target = df_train.as_matrix(columns=['output']).ravel()
# Get training and testing splits
splits = cross_validation.train_test_split(data, target, test_size=0.2)
data_train, data_test, target_train, target_test = splits
# Fit the training data to the model
model = RandomForestRegressor(100)
model.fit(data_train, target_train)
# Make predictions
expected = target_test
predicted = model.predict(data_test)

当我运行此代码以将变量"output"预测为该文件中所有其他变量的函数时:https://www.dropbox.com/s/cgyh09q2liew85z/uuu.csv?dl=0

预期数组和预测数组完全相同。似乎我过度拟合或做错了什么。如何解决?

质疑太好的结果值得称赞!

数据中的每个特征(列)仅包含少量非重复值。如果我计算正确,只有 14 个唯一不同的行

这有两个含义:

  1. 很可能是过度拟合,因为您只有 14 个有效样本,但有 36 个特征。

  2. 相同的行很可能再次出现在测试集和训练集中。这意味着您正在对训练模型的相同数据进行测试。由于模型与这些数据完美地过度拟合,因此您可以获得完美的结果。

编辑

刚刚意识到我还没有回答实际问题 - 如何解决它?

这要看情况。

如果幸运的话,有人在准备数据时犯了错误。

如果数据正确,事情将更加困难。首先,删除重复的行,例如通过执行np.vstack({tuple(row) for row in data})(请参阅此处)。然后尝试是否可以使用它做一些有意义的工作。但说实话,我相信 14 个样本对于做机器学习来说有点低。尝试获取更多数据:)

相关内容

  • 没有找到相关文章