python cross val score_python – “得分必须返回一个数字”scikit-learn中的cross_val_score错误...

我认为这可能是scikit中的一个问题. cross_val_score最终调用score函数,无论估计器传递给它.通常,得分(例如在KMeans中)为

returns a float.当KMeans估算器传递给cross_val_score时,一切都很好:

>>> clf = cluster.KMeans()

>>> score = cross_validation.cross_val_score(clf, X)

# (no error)

注意得分的返回类型:

>>> clf = cluster.KMeans()

>>> clf.fit(X)

>>> type(clf.score(X))

numpy.float64

>>> clf = mixture.GMM()

>>> clf.fit(X)

>>> type(clf.score(X))

numpy.ndarray

因为cross_val_score依赖于clf.score()返回一个浮点数,所以你看到的错误信息是有意义的.

解决方法是为您自己的得分手提供cross_val_score.例如,要获取GMM.score()返回的分数的平均值,请创建此评分函数:

>>> scorer = lambda est, data: np.mean(est.score(data))

然后你可以将这个得分手作为参数传递给cross_val_score:

>>> score = cross_validation.cross_val_score(clf, X, scoring=scorer)

这可以避免错误,我认为应该或多或少地做你正在寻找的东西.我不确定平均值是否必然是总结得分的最佳方式,尽管它似乎足够合理.但是从这里你可以定义自己的方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值