k-means 聚类基础

Python 中的聚类分析

Shaumik Daityari

Business Analyst

为何使用 k-means 聚类?

  • 层次聚类的关键缺点:运行时间
  • K-means 在大数据集上快得多
Python 中的聚类分析

步骤 1:生成簇中心

kmeans(obs, k_or_guess, iter, thresh, check_finite)
  • obs:标准化观测值
  • k_or_guess:簇数
  • iter:迭代次数(默认:20)
  • thres:阈值(默认:1e-05)
  • check_finite:是否检查观测值均为有限数(默认:True)

返回两个对象:簇中心、总体畸变

Python 中的聚类分析

畸变如何计算?

Python 中的聚类分析

步骤 2:生成簇标签

vq(obs, code_book, check_finite=True)
  • obs:标准化观测值
  • code_book:簇中心
  • check_finite:是否检查观测值均为有限数(默认:True)

返回两个对象:簇标签列表、各点畸变列表

Python 中的聚类分析

关于畸变的说明

  • kmeans 返回单个畸变值
  • vq 返回畸变列表
Python 中的聚类分析

运行 k-means

# Import kmeans and vq functions
from scipy.cluster.vq import kmeans, vq
# Generate cluster centers and labels
cluster_centers, _ = kmeans(df[['scaled_x', 'scaled_y']], 3)
df['cluster_labels'], _ = vq(df[['scaled_x', 'scaled_y']], cluster_centers)
# Plot clusters
sns.scatterplot(x='scaled_x', y='scaled_y', hue='cluster_labels', data=df)
plt.show()
Python 中的聚类分析

Python 中的聚类分析

接下来:练习!

Python 中的聚类分析

Preparing Video For Download...