cluster-analysis - 如何在 Sklearn 中使用带有混合(分类和数字)数据的 silhouette_score?
问题描述
我遇到了这样一种情况,即我混合了上述数据集并尝试了无监督聚类。
我正在尝试许多不同的实验,包括高尔距离和 K 原型。我想尝试一些 sklearn 指标,看看它们会给我带来什么价值。
当我查看剪影分数时,有一个参数“度量”,我可以决定我想要计算距离的内容。但由于我的数据类型混合,我想选择曼哈顿的数值和汉明的分类。有没有一种方法可以一次将 silhouette_score 用于两个指标?如果我所有的输入数据都是数字,我会做如下:
silhouette_score(friendRecomennderData, labels, metric = 'manhattan')
先感谢您。
解决方案
您对传递给silhouette_score
. 如果您阅读此处提到的文档,它会说明有关输入数据的以下内容,即参数X
:
X:数组 [n_samples_a, n_samples_a] 如果 metric == “precomputed”,或者, [n_samples_a, n_features] 否则。样本之间的成对距离数组或特征数组。
因此,数据只能是由样本之间的距离组成的数值数组。不可能将距离作为分类值。
您需要首先对数据进行聚类,然后获取距离矩阵并将距离矩阵作为输入提供给silhouette_score
.
推荐阅读
- java - Java - 尽管 getOrDefault 解析 JSON 时出现 NullPointerException
- .net - VB.NET 将检查项目值(参数)传递给水晶报告,但它只显示 WinForms 中最后一个检查值的结果(报告)
- c# - 在 C# 中查找两个对象之间的差异
- php - 使用 Doctrine Annotations 创建自定义注释失败
- hive - 如何使用 Zookeeper 从 Beeline 获取 hive 实例详细信息
- c# - 为什么我在 AndroidJavaClass 中找不到 class not found 异常?
- hmac - 在 IBM J9 上与空键一起使用时来自 Mac.init() 的 InvalidKeyException
- mysql - 从 pandas 数据帧到 mysql db 毫秒的日期时间
- angular - AspNetBoilerplate:前端的服务器端枚举使用(角度)?
- java - 尝试检测自创的死锁