Yellowbrick的KElbowVisualizer是否支持自定义轮廓评分的成对距离度量?
问题解答
可以为KElbowVisualizer的轮廓系数评分指定非默认的距离度量。
KElbowVisualizer底层计算轮廓系数时调用的是scikit-learn的silhouette_score接口,所有该接口支持的距离度量都可以传入使用,具体用法如下:
- 最新版本Yellowbrick可直接通过
distance_metric参数指定轮廓系数的距离度量,示例代码:
from sklearn.cluster import KMeans from yellowbrick.cluster import KElbowVisualizer # 示例:指定使用曼哈顿距离计算轮廓系数 visualizer = KElbowVisualizer( estimator=KMeans(random_state=42), k=(4,12), metric='silhouette', # 指定评估指标为轮廓系数 distance_metric='manhattan' # 指定轮廓系数使用的距离度量 ) # 传入你的样本数据X完成计算 visualizer.fit(X) visualizer.show()
- 如果你使用的是旧版本Yellowbrick,不支持直接传
distance_metric,可以通过metric_params参数将距离度量配置传递给底层的评分函数:
visualizer = KElbowVisualizer( KMeans(random_state=42), k=(4,12), metric='silhouette', metric_params={'metric': 'cosine'} )
目前支持你提到的cityblock、cosine、euclidean、l1、l2、manhattan等所有scikit-learn成对距离接口兼容的度量。
注意:建议保持轮廓系数使用的距离度量和聚类算法训练时使用的距离度量一致,否则评估结果的参考价值会大打折扣。比如KMeans默认基于欧氏距离聚类,如果换用余弦距离计算轮廓系数,得到的结果可能无法正确反映聚类效果。
内容的提问来源于stack exchange,提问作者plamb
相关产品推荐
相关产品推荐

