有哪些方法可以根据特征将个人聚类到不同的组中?

数据挖掘 数据挖掘 k-均值 主成分分析
2021-10-11 02:19:53

我从一个包含许多个体维度的数据集开始(每个 id 是一个单独的个体),并Features/Attributes为每个individual Id.

我的目标是根据这些特征将这些人分成两个或三个不同的组,看看我是否可以识别某些组之间的明显分离。

我想知道是否有人有任何建议或算法(最好是在 Python 中)将这些人聚集到不同的组中?我没有这些Individuals分类,所以这是一个无监督的聚类问题。我在想这K-Means可能是一个不错的选择,或者类似于 PCA 的东西,它可以降低我的维度并提供对似乎将个体群体分成不同群体的特征的洞察力。

感谢您的关注!

注意:下面显示的数据是人为生成的,以说明我的问题。

在此处输入图像描述

附录:参考数据:

Pattern,Feature A,Feature B,Feature C

6,2.18,0.13,8.00
9,9.31,3.67,6.58
11,0.89,1.83,4.33
13,9.73,9.50,1.59
23,0.51,6.49,0.09
26,9.04,3.42,3.90
27,8.35,9.18,3.40
28,3.04,5.63,6.88
32,9.78,6.52,8.50
43,4.11,3.36,1.83
49,9.57,1.52,7.09
51,1.13,9.98,9.42
53,6.22,1.37,7.07
62,8.79,3.03,7.52
63,6.27,7.29,0.98
71,4.64,0.06,6.55
73,1.34,9.32,5.15
83,4.53,3.85,2.04
84,9.48,9.71,3.23
86,3.80,3.00,0.76
88,1.73,0.64,9.96
2个回答

听起来你在正确的轨道上。有很多方法可以解决这个问题。如果您想可视化聚类,这将有助于将数据减少到两个组件。如果您想要非线性 ( http://scikit-learn.org/stable/modules/manifold.html ),这可以通过 PCA 或流形学习来完成。

在聚类方面,有许多不同的方法可以做到这一点。以下是不同方法的一些比较:http: //scikit-learn.org/stable/modules/clustering.html

聚类是创建相似项目组的过程,以使组内项目之间的差异最小化,而不同组中项目之间的差异最大化。因此,正如前面的答案已经说明的那样,您走在正确的轨道上。

你可以从一些简单的东西开始,比如 k-means,然后根据结果不断改进你的模型(另一个简单的选择是层次聚类)。但是,您应该考虑几件事情。例如,建议在聚类之前对数据进行标准化/标准化,以便所有特征的相对重要性相同。此外,某些方法(例如 k-means)需要先验了解数据中的组数。因此,如果您没有这些知识,您将不得不决定如何测试多个集群的聚类结果以及如何选择最佳模型。

PCA 不是聚类算法,而是降维算法。如果您的数据只有三个特征,我真的不认为您会事先需要 PCA。基于距离度量的聚类方法在高维数据的情况下表现不佳(但是,仍然可以使用一些技巧),但三个特征在这方面还不错。但是,如果您想可视化组和数据,应用 PCA 可能会很有用。再一次,由于您只有三个特征,因此仅制作 3D 绘图就足够了。

只需开始应用一些方法,探索您的数据,然后让结果帮助您决定下一步是什么。