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

如何在自定义sklearn Estimator上使用GridSearchCV?得分NaN问题

问题原因及解决方法

核心问题:自定义Estimator的score方法逻辑错误

你的score方法存在两个致命问题,直接导致GridSearchCV返回NaN得分:

  1. 引用外部全局变量train_new_y:交叉验证时每个fold传入的y是数据集拆分后的子集,其索引和全局的train_new_y无法保证完全匹配,会导致y_true = train_new_y[y.index]取值失败(比如索引不存在),最终计算准确率时返回NaN。
  2. 未用模型预测结果计算得分:当前代码返回accuracy_score(y_true, y_true),完全跳过模型预测步骤,逻辑无效,还因索引问题触发NaN。

修正后的score方法

正确的score方法应调用模型的predict方法生成预测结果,再和传入的真实标签y计算准确率:

def score(self, X, y):
    y_pred = self.predict(X)
    return accuracy_score(y, y_pred)

额外注意事项

  • 确保predict方法返回的类别标签和真实标签y取值范围一致,比如你当前classes = [2, 0, 0],若真实标签包含1类,会导致预测结果与真实标签不匹配,影响得分。
  • 检查PCA的n_components参数:GridSearchCV中你传入了n_components=50.0(浮点数),若代表维度数,建议保持参数为整数类型,避免潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:35:01