【发布时间】:2022-11-02 07:43:27
【问题描述】:
我想对一组超参数进行网格搜索以调整聚类模型。 GridSearchCV 为无监督学习提供了一堆评分函数,但我想使用一个不存在的函数,例如silhouette score。
关于如何实现我的自定义函数的documentation 不清楚我们应该如何定义我们的评分函数。此处的示例显示了简单地导入自定义记分器并使用make_scorer 创建自定义记分函数。但是,make_scorer 似乎需要真实值(在无监督学习中不存在),因此不清楚如何使用它。
这是我到目前为止所拥有的:
from sklearn.datasets import make_blobs
from sklearn.model_selection import GridSearchCV
from sklearn.cluster import DBSCAN
from sklearn.metrics import silhouette_score, make_scorer
Z, _ = make_blobs()
gs = GridSearchCV(estimator=DBSCAN(),
param_grid={'n_clusters': range(2, 5)},
cv=5,
scoring=make_scorer(my_custom_function)
)
gs.fit(Z)
我尝试以各种方式编写my_custom_function,但收到如下警告或错误:
TypeError: __call__() missing 1 required positional argument: 'y_true'
或者
ValueError: Found input variables with inconsistent numbers of samples: [20, 80]
如何正确定义我的自定义评分函数?
【问题讨论】:
标签: python machine-learning scikit-learn cluster-analysis grid-search