我怎样才能用几个特征和观察对这个数据框进行聚类?

人工智能 Python 数据集 无监督学习 聚类
2021-11-02 17:53:12

如何使用多个特征和观察结果对下面的数据框进行聚类?我将如何确定这些集群的质量?k-NN 适合这个吗?

id     Name             Gender   Dob    Age  Address
1   MUHAMMAD JALIL      Male    1987    33   Chittagong
1   MUHAMMAD JALIL      Male    1987    33   Chittagong
2   MUHAMMAD JALIL      Female  1996    24   Rangpur
2   MRS. JEBA           Female  1996    24   Rangpur
3   MR. A. JALIL        Male    1987    33   Sirajganj
3   MR. A. JALIL        Male    1987    33   Sirajganj
3   MD. A. JALIL        Male    1987    33   Sirajganj
4   MISS. JEBA          Female  1996    24   Rangpur
4   PROF. JEBA          Female  1996    24   Rangpur
1   MD. A. JALIL        Male    1987    33   Chittagong
1   MUHAMMAD A. JALIL   Male    1987    33   Chittagong
4个回答

典型的聚类算法是k-means(而不是k-NN,即k-最近邻,主要用于分类)。还有其他聚类算法,例如层次聚类算法sklearn提供实现k-means(和示例)、层次聚类算法其他聚类算法的函数。

要评估生成的集群的质量,您可以使用剪影方法sklearn提供可用于计算剪影分数的函数)。

关于您的特定数据框,请注意它包含重复,因此您可能希望在开始聚类过程之前删除它们。此外,ID 不是唯一的,但您可能不需要用于集群的 ID。

是的,您可以使用 KNN 算法对数据进行聚类(如果您使用 KNN,实际上它是分类而不是聚类)。但是,首先您需要将一个特征设置为标签,因为 KNN 是一种监督学习方法,它需要一个带标签的数据来首先训练数据。例如,您可以使用 Gender 作为标签来对数据进行分类。要确定分类结果的质量,您可以简单地使用准确度。

如果不想使用标签,可以使用 K-Means 等无监督学习方法进行聚类。因为它是无监督的,所以不需要标签,因此您可以使用所有功能来执行集群任务。对于 k-means 算法,您可以使用 scikit-learn 的库或从头开始创建它。要评估结果,您可以使用轮廓分数或肘部方法(找到最佳聚类数)。

并且不要忘记进行数据探索,因为它可能会提高集群结果的质量。

您可以在以下链接中了解有关 K-Means 和 KNN 之间区别的更多信息: https ://pythonprogramminglanguage.com/how-is-the-k-nearest-neighbor-algorithm-different-from-k-means-clustering/

我希望这有帮助 :)

KNN 可用于与数据框进行聚类。但是您必须采取一些步骤。1.你必须分离你想要集群的特征。例如,您可以对出生日期和年龄进行聚类。2. 如果有字符串类型的数据,则必须将其更改为整数。为了更轻松地进行聚类,您可以使用 Sklearn 库。您可以通过以下链接访问https://scikit-learn.org/stable/modules/clustering.html

有几种聚类算法,例如:K-means、Mean shift、分层等。根据我的经验,实际上它是 K-means(KNN 用于分类)。它适用于对您的数据集进行聚类,对您的数据集进行聚类有几个步骤:

  1. 您必须确定要集群哪些功能
  2. 将分类数据集更改为数值
  3. 此步骤是可选的,您可以删除与您之前选择的功能无关的列
  4. 尝试对您的聚类进行编码(例如从数据集中确定质心,计算与质心的欧几里德距离等),或者如果您想使用库,也许 sklearn 是正确的地方。

为了确定集群的质量,您可以测量 SSE(每个集群项目的平方误差之和)、集群间距离、每个集群的集群内距离、最大半径、平均半径。