调用cross_val_score传入return_train_score参数报错的原因咨询
问题解决:
cross_val_score不支持return_train_score参数 错误原因
cross_val_score函数本身不支持return_train_score参数,这个参数是cross_validate函数的专属参数。cross_val_score仅返回交叉验证的测试集得分,若要同时获取训练集与测试集的交叉验证得分,必须使用cross_validate。
修正后的完整代码
from sklearn.model_selection import cross_validate from sklearn.neighbors import KNeighborsClassifier results_dict = { "n_neighbors": [], "mean_train_score": [], "mean_cv_score": [] } for k in range(2, 20, 2): knn = KNeighborsClassifier(n_neighbors=k) # 用cross_validate替代cross_val_score,指定返回训练集得分 cv_results = cross_validate(knn, X_train, y_train, cv=5, return_train_score=True) results_dict['n_neighbors'].append(k) # 计算训练得分的均值并存入字典 results_dict['mean_train_score'].append(cv_results['train_score'].mean()) # 计算交叉验证测试得分的均值并存入字典 results_dict['mean_cv_score'].append(cv_results['test_score'].mean()) print(results_dict)
额外修正说明
原代码中append(['train_score'])属于错误写法,会将字符串存入字典而非实际得分值。修正后的代码通过cv_results['train_score'].mean()和cv_results['test_score'].mean()提取每轮交叉验证得分的均值,确保字典存储有效数值结果。
内容的提问来源于stack exchange,提问作者counterculture
相关产品推荐
相关产品推荐

