我一直在使用sklearn的随机森林,并尝试比较几个模型。然后我发现,即使使用相同的种子,随机森林也会给出不同的结果。我已经尝试了两种方法:random.seed(1234)和使用内置的随机状态random_state = 1234。但无论哪种方式,我都得到了不可重复的结果。我错过了什么......?
# 1
random.seed(1234)
RandomForestClassifier(max_depth=5, max_features=5, criterion='gini', min_samples_leaf = 10)
# or 2
RandomForestClassifier(max_depth=5, max_features=5, criterion='gini', min_samples_leaf = 10, random_state=1234)
有什么想法吗?谢谢!!
编辑: 添加我代码更完整的版本
clf = RandomForestClassifier(max_depth=60, max_features=60, \
criterion='entropy', \
min_samples_leaf = 3, random_state=seed)
# As describe, I tried random_state in several ways, still diff results
clf = clf.fit(X_train, y_train)
predicted = clf.predict(X_test)
predicted_prob = clf.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = metrics.roc_curve(np.array(y_test), predicted_prob)
auc = metrics.auc(fpr,tpr)
print (auc)
编辑:虽然时间已经过去了很久,但我认为使用RandomState可能会解决问题。我还没有亲自测试过,但如果您在阅读此内容,那么试一试也是值得的。此外,通常最好使用RandomState而不是random.seed()。