【发布时间】:2019-03-01 23:33:52
【问题描述】:
我想训练我的模型并选择最佳数量的树。代码在这里
from sklearn.ensemble import RandomForestClassifier
tree_dep = [3,5,6]
tree_n = [2,5,7]
avg_rf_f1 = []
search = []
for x in tree_dep:
for y in tree_n:
search.append((a,b))
rf_model = RandomForestClassifier(n_estimators=tree_n, max_depth=tree_dep, random_state=42)
rf_scores = cross_val_score(rf_model, X_train, y_train, cv=10, scoring='f1_macro')
avg_rf_f1.append(np.mean(rf_scores))
best_tree_dep, best_n = search[np.argmax(avg_rf_f1)]
错误在这一行
rf_scores = cross_val_score(rf_model, X_train, y_train, cv=10, scoring='f1_macro')
说
ValueError: n_estimators must be an integer, got <class 'list'>.
想知道如何解决它。谢谢!!!
【问题讨论】:
-
看看你的错误信息。你还没有通过
int,你已经通过了整个list。rf_model = RandomForestClassifier(n_estimators=y) -
是的,我明白了。但老实说,我真的是 python 的初学者。不知道怎么改。
-
我在上面的评论中添加了答案。或查看 Piotrek 的回答
-
我应该单独训练树的数量吗?像 rf_model = RandomForestClassifier(n_estimators=2) ; rf_model = RandomForestClassifier(n_estimators=5); rf_model = RandomForestClassifier(n_estimators=7) ?
-
啊啊啊!!我知道了。我怎么没看到!!谢谢!
标签: python machine-learning scikit-learn random-forest cross-validation