You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python超参数调优遇NameError:RandomForestClassifier未定义求解

解决RandomForestClassifier未定义的NameError问题

问题原因

报错提示NameError: name 'RandomForestClassifier' is not defined,是因为你只导入了RandomizedSearchCV,但没有导入RandomForestClassifier类,同时accuracy_score也需要单独导入。

解决方案

  1. 补充缺失的导入语句
    在代码开头添加以下导入:

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import accuracy_score
    
  2. 完整可运行代码示例

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import accuracy_score
    from sklearn.model_selection import RandomizedSearchCV
    
    n_estimators_array = [1, 4, 5, 8, 10, 20, 50, 75, 100, 250, 500]
    results = []
    for n in n_estimators_array:
        forest = RandomForestClassifier(n_estimators=n, random_state=76)
        forest.fit(x_train, y_train)
        result = accuracy_score(y_test, forest.predict(x_test))
        results.append(result) 
        print(n, ':', result)
    

额外优化(用RandomizedSearchCV做超参数调优)

既然你已经导入了RandomizedSearchCV,可以直接用它替代手动循环,效率更高且支持交叉验证:

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import RandomizedSearchCV

param_dist = {'n_estimators': [1, 4, 5, 8, 10, 20, 50, 75, 100, 250, 500]}
# 初始化随机搜索,cv=5表示5折交叉验证
random_search = RandomizedSearchCV(
    estimator=RandomForestClassifier(random_state=76),
    param_distributions=param_dist,
    n_iter=11,  # 遍历所有参数选项
    cv=5,
    random_state=76,
    scoring='accuracy'
)
random_search.fit(x_train, y_train)

# 输出最佳结果
print("最佳n_estimators参数:", random_search.best_params_)
print("交叉验证最佳准确率:", random_search.best_score_)
# 在测试集上验证
test_accuracy = accuracy_score(y_test, random_search.predict(y_test))
print("测试集准确率:", test_accuracy)

内容的提问来源于stack exchange,提问作者Kori gray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:08:24