Machine Learning 简明教程
Machine Learning - K-Means Clustering
K 均值算法可以总结为以下步骤:
-
Initialization - 选择 K 个随机数据点作为初始中心点。
-
Assignment - 将每个数据点分配给最近的中心点。
-
Recalculation - 通过获取每个集群中所有数据点的均值来重新计算中心点。
-
Repeat - 重复步骤 2-3,直到中心点不再移动或达到最大迭代次数。
K 均值算法是一种简单且高效的算法,并且可以处理大型数据集。然而,它有一些限制,例如对初始中心点的敏感性、收敛到局部最优的倾向以及对所有集群假设等方差。
Implementation in Python
Python 有几个库提供了各种机器学习算法的实现,包括 K 均值聚类。我们来看看如何使用 scikit-learn 库在 Python 中实现 K 均值算法。
Step 1 − Import Required Libraries
要在 Python 中实现 K 均值算法,我们首先需要导入所需的库。我们将分别使用 numpy 和 matplotlib 库进行数据处理和可视化,以及 scikit-learn 库进行 K 均值算法。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
Step 2 − Generate Data
要测试 K 均值算法,我们需要生成一些样本数据。在此示例中,我们将生成 300 个带有两个特征的随机数据点。我们还会对数据进行可视化。
X = np.random.rand(300,2)
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:, 0], X[:, 1], s=20, cmap='summer');
plt.show()
Step 3 − Initialize K-Means
接下来,我们需要通过指定集群数 (K) 和最大迭代次数来初始化 K 均值算法。
kmeans = KMeans(n_clusters=3, max_iter=100)
Step 5 − Visualize the Clusters
为了可视化集群,我们可以绘制数据点并根据其分配的集群为它们上色。
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:,0], X[:,1], c=kmeans.labels_, s=20, cmap='summer')
plt.scatter(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,1],
marker='x', c='r', s=50, alpha=0.9)
plt.show()
以上代码的输出将是一个带有根据其分配的集群着色的数据点的图,以及以红色“x”符号标记的中心点。
Complete Implementation Example
以下是 Python 中 K 均值聚类算法的完整实现示例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
X = np.random.rand(300,2)
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:, 0], X[:, 1], s=20, cmap='summer');
plt.show()
kmeans = KMeans(n_clusters=3, max_iter=100)
kmeans.fit(X)
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:,0], X[:,1], c=kmeans.labels_, s=20, cmap='summer')
plt.scatter(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,1],
marker='x', c='r', s=50, alpha=0.9)
plt.show()
当你执行此代码时,它将生成以下图作为输出: