【问题标题】:No score method for MeanShift estimator - scikit-learnMeanShift 估计器的无分数方法 - scikit-learn
【发布时间】:2019-01-15 13:11:15
【问题描述】:

我试图使用 GridSearch 来迭代 MeanShift 算法的不同带宽值,它显示了这个错误;你们有谁知道我该如何解决这个问题?非常感谢!

# Using GridSearch for Algorithm Tuning
from sklearn.model_selection import GridSearchCV
meanshift=MeanShift()
C = range(48, 69) # For MeanShift bandwidth
param_grid = {"bandwidth": range(48, 69)}

mean_grid = GridSearchCV(estimator=meanshift, param_grid=param_grid, scoring=None)

mean_grid.fit(X)

这是我得到的错误:

TypeError: If no scoring is specified, the estimator passed should have a 'score' method. The estimator MeanShift(bandwidth=None, bin_seeding=False, cluster_all=True, min_bin_freq=1,
     n_jobs=1, seeds=None) does not.

【问题讨论】:

  • 你有集群的实际标签吗?由于您没有在fit() 中传递任何基本事实数据(集群的实际标签,y),您将如何计算分数?在什么基础上,GridSearchCV 会判定一个特定的bandwidth 值优于其他值?
  • sklearn.clustering 中没有类支持score()KMeans 除外。你想使用那个score() 函数吗?
  • @VivekKumar;非常感谢你的回复。我实际上对我最终应该拥有的集群一无所知..这意味着我无法计算 MeanShift 的分数。但是,我想知道是否还有其他的,以便我们根据我们想要的集群数量来设置分数?

标签: machine-learning scikit-learn cluster-analysis grid-search mean-shift


【解决方案1】:

您不能很好地将 GridSearch 与 无监督 方法一起使用。

网格搜索的概念是在对保留的数据进行预测时选择那些具有最佳分数的参数。但由于大多数聚类算法无法对看不见的数据进行预测,因此这是行不通的。

在无监督学习中选择“最佳”参数并不是那么简单。这就是为什么没有像 gridsearch 这样简单的自动化工具可用的原因。

【讨论】:

    【解决方案2】:

    这是因为MeanShift 算法不包含score 函数。在这种情况下,您必须在 GridSearchCV 中指定 scoringHere 是一个完整的列表。

    来自GridSearchCVdocumentation

    参数:

    估计器:估计器对象。

    假设这是为了实现 scikit-learn 估计器接口。要么估算器需要提供score 函数,要么必须传递scoring

    【讨论】:

    • 为什么(-1)得分?
    猜你喜欢
    • 2019-11-22
    • 2020-09-25
    • 2013-06-04
    • 2021-08-17
    • 2015-02-15
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多