我有以下数据集,我想在上面应用聚类(特别是k均值)。
id category value
0 122 A 3
1 122 B 4
2 122 C 9
3 145 A 19
4 145 B 22
5 145 C 90
.
.
.
197 225 A 16
198 225 B 17
199 225 C 12
我想做的是创建id集群。例如,每个聚类应包含基于类别值计算出的相似性度量的一些ID。
例如:C1 {122,145,148} C2 {225,222,221} ....
关于如何处理此类问题的任何想法?
答案 0 :(得分:0)
Pivot 将您的数据转换为适当的形状:
您的类别应为列,而不是单独的行。
id A B C
1 122 3 4 9
2 145 19 22 90
..
别忘了排除ID列进行分析!集群时切勿包含ID。为了进行分析,您的数据应仅包含A,B,C列;每个ID一行。这样您就有了一个n x 3的矩阵,那么就可以使用k均值了。
答案 1 :(得分:-1)
我假设存在A-Z中的类别,并且有许多行属于同一类别。 K均值算法的工作原理如下所示。从您的问题还不清楚什么是相似性度量。一旦更清楚地了解聚类目标是什么,我将更新我的答案。
更新:在再次查看数据并注意到@ Anony-Mousse的评论之后,我认为问题是:给定三个类别A,B,C及其各自的值和标签(Ids),根据它们进行聚类一些相似性指标(可以是欧几里得距离,余弦距离或其他一些度量)。我正在更新我以前的答案,以符合上述假设。
解析数据并生成三个数字或一键编码的特征,这些特征表示每个ID的类别A,B和C的值。
K:输入
重复直到收敛:
- 随机将3维簇质心U1初始化为Uk。
- 对于每个Id,请找到类别值和聚类质心之间的最小欧式距离总和。将该群集质心分配为 当前ID的新群集中心。
- 对于每个群集,通过平均分配给它的所有样本(Id)的特征来重新计算其质心。
当簇质心不发生变化或每个质心的变化小于输入所提供的较小值时,就会出现收敛。