我希望在包含大量 0 值的数据集上执行 k-means。
您看到的最后一个值与其他值不同,它只是事务的总和,与分类频率计数无关。
例子:
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 189200.579626]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06556796]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.46e-06]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.46e-06]
每个特征都是在一个类别中看到相关 id 的次数的频率计数。
当我运行 k-means 时,我看到大部分数据都聚集在一个集群中。
+------------+--------+----------------------+
| cluster_id | size | sum_squared_distance |
+------------+--------+----------------------+
| 0 | 659187 | 0.999997057952 |
| 1 | 3 | 1.33333326876 |
| 2 | 1 | 0.0 |
| 3 | 3 | 0.666666716337 |
| 4 | 1 | 0.0 |
| 5 | 1 | 0.0 |
| 6 | 1 | 0.0 |
| 7 | 1 | 0.0 |
| 8 | 1 | 0.0 |
| 9 | 11 | 2.72727286816 |
+------------+--------+----------------------+
我假设这是因为大部分数据集没有出现在特征类别中,因此值为 0。
克服这个问题的最佳方法是什么,删除0在每个类别中都可以看到 a 的行?这些行对聚类没有意义吗?