我使用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)
哪个版本正确?
提前致谢!
答案 0 :(得分:4)
两者都有可能,但做不同的事情。
第一个学习y
的不同条目的独立模型。第二个学习y
的所有条目的联合模型。如果可以学习的y
条目之间存在有意义的关系,则第二条应该更准确。
由于您正在训练非常少的数据并且没有规范化,我想您在第二种情况下只是过度拟合。我不完全确定回归情况下的分裂标准,但如果标签空间是三维的,那么如果它只是一维的话,那么叶片需要更长的时间才能“纯净”。因此,您将学习更复杂的模型,而这些模型并非由您拥有的小数据保证。
答案 1 :(得分:2)
“8个列车值和3个值”可能最好用通常的机器学习术语表示为“8个特征和3个目标变量”。
两种变体都应该起作用,并且产生类似的预测,因为RandomForestRegressor
已被用来支持多输出回归。
预测与 RandomForestRegressor
不完全相同,但是非确定性算法。但平均而言,两种方法的预测质量应该相同。
修改:请参阅Andreas的答案。