Python Sckiit学习随机森林:预测变量的顺序改变结果

时间:2016-07-20 13:36:41

标签: python python-2.7 scikit-learn random-forest prediction

我正在使用Python SciKit学习的RandomForest方法处理分类问题。

我看到我提供预测变量的顺序,改变结果(不是很明显,但仍然足以让我担心)

例如,我有一个数据库traintest,每个数据库都有几列,包括二进制响应变量(y)。我想只使用某些列作为预测变量,而我的方式是

preds=[x1,
       x2,
       x3,
       x4]
X=train[preds] 
Y=train[`y`]         
forest=RandomForestClassifier(n_estimators=200,max_features=10,
min_samples_leaf=5,criterion='gini',random_state=2525)
forest_model=forest.fit(X,Y)

test_resp=forest.predict_proba(test[preds]) # probability 
Ypred=(test_resp[:,1]>0.45)
metrics.confusion_matrix(test[`y`],Ypred)
如果我在变量xs中输入preds的顺序(以及X中的xs),我从此代码获得的指标可能会在某种程度上发生变化

所以像这样的代码与上面的代码相同,除了preds=[x3, x4, x1, x2] X=train[preds] Y=train[`y`] forest=RandomForestClassifier(n_estimators=200,max_features=10, min_samples_leaf=5,criterion='gini',random_state=2525) forest_model=forest.fit(X,Y) test_resp=forest.predict_proba(test[preds]) # probability Ypred=(test_resp[:,1]>0.45) metrics.confusion_matrix(test[`y`],Ypred) 的开头,

{{1}}

可以给出不同的结果。我可以想象这是因为固有的"随机性"在算法中但我想知道是否有人可以告诉我如何克服SciKit中的这种问题或者我做错了什么。

P.S:我道歉,我无法提供可重复的例子。我在此模型中从多个来源导入了大量数据,其中一些数据无法公开共享。我只是认为这可能是一个已知问题,必须有办法解决它。

0 个答案:

没有答案