运行GridSearchCV函数报错:TypeError: 意外关键字参数'njobs'
问题解决:GridSearchCV的TypeError错误
错误原因分析
你遇到的两个关键问题:
- 参数名拼写错误:GridSearchCV中控制并行任务的参数是
n_jobs(带有下划线),而不是njobs,这是导致unexpected keyword argument错误的直接原因。 - 初始化参数顺序错误:GridSearchCV的第一个必填参数是要进行调参的模型实例(比如RandomForestClassifier),而你直接传入了
param_grid,这会导致后续fit时出现逻辑错误。
修正后的代码
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import GridSearchCV import time # 1. 先创建RandomForest分类器实例 rfc = RandomForestClassifier() # 2. 定义参数网格 param_grid = [ { 'n_estimators': [100, 200, 500], 'max_depth': [5, None] }, ] start = time.time() # 3. 正确初始化GridSearchCV:第一个参数是模型,param_grid用关键字传入 rfc_grid_search = GridSearchCV( estimator=rfc, param_grid=param_grid, cv=10, scoring='f1_macro', return_train_score=True, n_jobs=-1 # 修正参数名 ) rfc_grid_search.fit(X_train, Y_train) end = (time.time() - start)/3600 print(f"Took {end} hours")
额外说明
- 如果你之前是用Pipeline(管道)封装模型,参数名才需要加
rfc__前缀(比如管道里给模型命名为rfc),如果直接使用单个模型,参数名不需要前缀,直接用n_estimators、max_depth即可。 n_jobs=-1表示使用所有可用的CPU核心加速交叉验证,适合大数据集调参。
内容的提问来源于stack exchange,提问作者Abdullah alam
相关产品推荐
相关产品推荐

