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)
当我运行此代码来预测变量“输出”作为该文件中所有其他变量的函数时:https : //www.dropbox.com/s/cgyh09q2liew85z/uuu.csv?dl=0
预期和预测的数组完全相同。好像我过度拟合或做错了什么。如何解决?
质疑结果太好了!
数据中的每个要素(列)仅包含少量不同的值。如果我计算正确,那么只有14个唯一不同的行。
这有两个含义:
您很可能过度拟合,因为您只有14个有效样本,但有36个特征。
同一行很可能再次出现在测试集中和训练集中。这意味着您正在测试与训练模型相同的数据。由于模型完全适合该数据,因此您可以获得理想的结果。
编辑
我只是意识到我还没有回答实际的问题-如何解决?
那要看。
如果幸运的话,有人在准备数据时出错。
如果数据正确,事情将会变得更加困难。首先,通过执行操作来消除重复的行np.vstack({tuple(row) for row in data})
(请参阅此处)。然后尝试是否可以做一些有意义的工作。但是老实说,我相信14个样本对于进行机器学习来说有点低。尝试获取更多数据:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句