决定包含分类和数值变量的数据集的聚类算法

时间:2018-04-26 15:30:27

标签: python machine-learning cluster-analysis dimensionality-reduction

我是机器学习的新手,并试图用聚类算法进行分割。但是,由于我的数据集既有分类变量(如性别,婚姻状况,首选社交媒体平台等)以及数字变量(平均支出,年龄,收入等),我无法确定哪些算法值得关注。 我应该尝试哪一个:模糊c意味着,k-medoids或潜在类与k-means ++进行比较?哪些会为这些类型的混合数据集产生更好的结果?

奖金问题:我是否应该尝试在没有降维的情况下进行聚类?或者我应该在任何情况下使用PCA或K-PCA来减小尺寸?此外,如果数据集的维度超过3个,如何在不进行可视化的情况下理解和解释结果?

2 个答案:

答案 0 :(得分:1)

最好的办法是分层凝聚聚类,并使用Gower等距离指标。

具有不同尺度的混合数据通常不会以任何统计有意义的方式起作用。你有太多的权重可供选择,所以没有结果在统计上有充分根据,但很大程度上是你的权重的结果。因此,不可能认为某些结果是“真正的”聚类。不要指望结果非常好。

答案 1 :(得分:0)

通常,当您有分类数据时,您会尝试将它们编码为"数字"值。现在在你的情况下考虑社交媒体:twitter,facebook,google-plus。你可能很想把它们编码为twitter:0,facebook:1,google-plus:2。但是这种编码有问题:它暗示机器学习算法google-plus是facebook的两倍,这不是你想要的。

输入一个热门编码:它将分类数据转换为位向量。因此,您的位数将等于数据中存在的类别数:

social media  |  binary vector (bits in order: is_twitter, is_facebook, is_google_plus)
twitter       |  1, 0, 0
facebook      |  0, 1, 0
google-plus   |  0, 0, 1

现在您可以应用任何ML算法,因为您的所有数据都是数字的。

更多信息:One hot encoding in scikit