K-均值聚类算法解析

随着数据驱动决策的普及,企业越来越依赖历史数据来分析个体行为和识别模式。电子商务、银行和保险公司是这一趋势的典型代表。这些业务中,聚类算法被广泛使用。聚类,顾名思义,就是将相似的数据点分组成群。那么,聚类是如何工作的呢?本文将为解答这个问题。

目录

  • 什么是聚类?
  • 聚类类型
  • 什么是K-均值聚类
  • K-均值算法流程
  • K-均值工作原理
  • 欧几里得距离公式
  • 计算新质心的中点公式
  • 在Python中实现K-均值
  • 结论

1. 什么是聚类?

聚类是一种将相似元素分组的过程。它可以被定义为将数据分解成包含相似数据点的组的过程。

2. 聚类类型

独占聚类 - 两个或多个不重叠的组或聚类。 重叠聚类 - 两个或多个重叠的组或聚类。 层次聚类 - 构建聚类的层次结构。

3. 什么是K-均值聚类?

K-均值算法使用聚类方法将相似的数据点分到同一组中,组内的数据点具有共同特征,与其他组的数据点相比则具有明显差异。同一组中的点尽可能相似,不同组的点尽可能不同。

4. K-均值算法流程

输入聚类数量,计算数据点与聚类中心的距离,将数据点分配到最近的聚类,重新计算质心,并为所有数据点重复此过程。

5. K-均值工作原理

让通过一个表格来理解K-均值算法,其中有数据点,并将这些数据点聚类到两个聚类中(K=2)。最初,考虑数据点1和数据点2作为初始质心,即聚类1(X=121和Y=305)和聚类2(X=147和Y=330)。

6.欧几里得距离公式

使用欧几里得距离公式,剩余的数据点3到33被分到两个聚类k1和k2中,这取决于它们与聚类中心的距离。

sqrt((xn - xc)^2 + (yn - yc)^2)

其中xn和yn是3到33的其他数据点,xc和yc是假设的聚类1和聚类2的质心。

7. 计算新质心的中点公式

新质心k2 = (x, y: (sum(x)/n, sum(y)/n)) # 导入所需的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 创建数据框 df = pd.read_excel("dat1.xlsx") df.head() df.shape df.describe() # 检查缺失值并删除“Data Points”列 df.isnull().sum() df.drop(columns=['Data Points'], inplace=True) df.head() # 建模 X1 = df.values # 导入KMeans from sklearn.cluster import KMeans # 寻找最佳“K”聚类值 k_inertia = [] for k in range(1, 11): kmeans = KMeans(n_clusters=k, init='k-means++') kmeans.fit(X1) k_inertia.append(kmeans.inertia_) # 可视化以找到“K值” plt.figure(figsize=(12,6)) plt.grid() plt.plot(range(1,11), k_inertia, linewidth=2, color="red", marker="8") plt.xlabel('K Values') plt.ylabel("K_Inertia") plt.show() # 将K值设为2 kmeans = KMeans(n_clusters=2) label = kmeans.fit_predict(X1) print(label) print(kmeans.cluster_centers_) # 绘制散点图 plt.scatter(X1[:,0], X1[:,1], c=kmeans.labels_, cmap='rainbow') plt.scatter(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,1], color='black') plt.title('K-Means') plt.xlabel('Distance') plt.ylabel('Cost') plt.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485