一个预测中的目标值的数量

时间:2013-01-24 16:55:47

标签: python statistics machine-learning scikit-learn random-forest

我使用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)

哪个版本正确?

提前致谢!

2 个答案:

答案 0 :(得分:4)

两者都有可能,但做不同的事情。

第一个学习y的不同条目的独立模型。第二个学习y的所有条目的联合模型。如果可以学习的y条目之间存在有意义的关系,则第二条应该更准确。

由于您正在训练非常少的数据并且没有规范化,我想您在第二种情况下只是过度拟合。我不完全确定回归情况下的分裂标准,但如果标签空间是三维的,那么如果它只是一维的话,那么叶片需要更长的时间才能“纯净”。因此,您将学习更复杂的模型,而这些模型并非由您拥有的小数据保证。

答案 1 :(得分:2)

“8个列车值和3个值”可能最好用通常的机器学习术语表示为“8个特征和3个目标变量”。

两种变体都应该起作用,并且产生类似的预测,因为RandomForestRegressor已被用来支持多输出回归。

预测与RandomForestRegressor不完全相同,但是非确定性算法。但平均而言,两种方法的预测质量应该相同。

修改:请参阅Andreas的答案。