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

标签 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)

哪个版本是正确的?

提前致谢!

最佳答案

两者皆有可能,但作用不同。

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

由于您在非常少的数据上进行训练并且没有进行正则化,因此我想您在第二种情况下只是过度拟合。我不完全确定回归案例中的拆分标准,但如果标签空间是三维的,则叶子要“纯”的时间比它只是一维的要长得多。因此,您将学习更复杂的模型,而您所拥有的少量数据并不能保证这些模型。

关于python - 一个预测中的目标值数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506615/

相关文章:

javascript - 如何编写自己的脚手架(像 RoR 那样?)

python - 如何删除 EOFError : EOF when reading a line?

image-processing - 如何使用主成分分析选择多个维度

python - Python 的文件名约定

python - 解析引号和转义字符 CSV 文件

r - 生成给定百分位数的分布

machine-learning - 为什么不同的股票可以合并在一起构建单一的预测模型?

python - 使用 scipy.stats 使用自定义分布拟合数据

csv - scikit learn - 将存储为字符串的特征转换为数字

machine-learning - 神经网络中的误差和准确度较低。