Python中如何输出所有random_state对应的模型准确率?
问题分析与解决
你的代码存在两个关键问题,导致无法输出1-5的所有结果:
- 循环范围错误:Python的
range(1,5)是左闭右开区间,实际只会生成1、2、3、4四个值,不会包含5。要覆盖1-5的所有数值,需要写成range(1,6)。 - 缩进错误:Python依赖缩进区分代码块,你循环内的所有语句(创建RFC实例、拟合模型、预测、打印结果)都没有缩进,导致这些代码不会被循环执行,仅会在循环结束后执行一次。
修改后的代码
from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # 假设X_train、y_train、x_test、y_test已提前定义 for index in range(1, 6): # 调整range范围,覆盖1-5 Rndm1 = RandomForestClassifier(n_estimators=500, random_state=index) Rndm1.fit(X_train, y_train) y_pred = Rndm1.predict(x_test) print("selected random state:", index) print("Accuracy:", accuracy_score(y_test, y_pred)) print() # 打印空行,匹配期望的结果格式
补充说明
- 调整
range(1,6)后,循环会依次取1、2、3、4、5作为random_state的值。 - 给循环内的所有代码添加缩进(通常为4个空格),确保每一轮循环都能完整执行模型训练、预测和结果打印流程。
- 新增的
print()用来输出空行,让最终结果的排版和你期望的一致。
内容的提问来源于stack exchange,提问作者Ajrhjnd
相关产品推荐
相关产品推荐

