问题描述
我遇到一种情况,我如上所述混合了数据集,并尝试了无监督聚类。
我正在尝试许多不同的实验,包括高尔的距离和K原型。我想尝试一些sklearn指标,看看它们如何给我带来价值。
当我查看Silhouette_score时,有一个参数'metric',我可以决定要计算的距离。但是由于数据类型混合,我想选择 manhattan (数字)和 hamming (类别)。 是否可以一次性使用Silhouette_score来同时使用两个指标?如果我所有的输入数据都是数字,则可以按照以下步骤操作:
silhouette_score(friendRecomennderData,labels,metric = 'manhattan')
谢谢。
解决方法
您对传递给silhouette_score
的参数感到困惑。如果您阅读提到的文档here,则它会对输入数据(即参数X
)进行以下说明:
因此,数据只能是包含样本之间距离的数字数组。距离不能作为分类值。X:如果metric ==“ precomputed”,则数组[n_samples_a,n_samples_a],否则,数组[n_samples_a,n_features]。样本之间的成对距离数组或特征数组。
您需要首先对数据进行聚类,然后获取距离矩阵并将该距离矩阵作为输入提供给silhouette_score
。
您可以使用处理混合数据类型的 gowers distance 等距离度量,然后使用计算的距离矩阵作为 X 和 metric = 'precomputed' 函数中的 shadow_score。