我正在使用Python SciKit学习的RandomForest方法处理分类问题。
我看到我提供预测变量的顺序,改变结果(不是很明显,但仍然足以让我担心)
例如,我有一个数据库train
和test
,每个数据库都有几列,包括二进制响应变量(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:我道歉,我无法提供可重复的例子。我在此模型中从多个来源导入了大量数据,其中一些数据无法公开共享。我只是认为这可能是一个已知问题,必须有办法解决它。