我使用 python 的 scikit-learn 模块来预测 CSV 文件中的某些值。我正在使用 Random Forest Regressor 来做这件事。例如,我有 8 个训练值和 3 个要预测的值——我必须使用哪些代码?作为要预测的值,我必须一次(A) 还是分别(B) 给出所有目标值?
变体 A:
#Readind CSV file
dataset = genfromtxt(open('Data/for training.csv','r'), delimiter=',', dtype='f8')[1:]
#Target value to predict
target = [x[8:11] for x in dataset]
#Train values to train
train = [x[0:8] for x in dataset]
#Starting traing
rf = RandomForestRegressor(n_estimators=300,compute_importances = True)
rf.fit(train, target)
变体 B:
#Readind CSV file
dataset = genfromtxt(open('Data/for training.csv','r'), delimiter=',', dtype='f8')[1:]
#Target values to predict
target1 = [x[8] for x in dataset]
target2 = [x[9] for x in dataset]
target3 = [x[10] for x in dataset]
#Train values to train
train = [x[0:8] for x in dataset]
#Starting traings
rf1 = RandomForestRegressor(n_estimators=300,compute_importances = True)
rf1.fit(train, target1)
rf2 = RandomForestRegressor(n_estimators=300,compute_importances = True)
rf2.fit(train, target2)
rf3 = RandomForestRegressor(n_estimators=300,compute_importances = True)
rf3.fit(train, target3)
哪个版本是正确的?
提前致谢!
最佳答案
两者皆有可能,但作用不同。
第一个为 y
的不同条目学习独立模型。第二个为 y
的所有条目学习一个联合模型。如果可以学习的 y
条目之间存在有意义的关系,则第二个应该更准确。
由于您在非常少的数据上进行训练并且没有进行正则化,因此我想您在第二种情况下只是过度拟合。我不完全确定回归案例中的拆分标准,但如果标签空间是三维的,则叶子要“纯”的时间比它只是一维的要长得多。因此,您将学习更复杂的模型,而您所拥有的少量数据并不能保证这些模型。
关于python - 一个预测中的目标值数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506615/