详解 Scikit-learn 的 cluster.KMeans函数:K 均值聚类

  • Post category:Python

Sklearn.cluster.KMeans 函数作用

sklearn.cluster.KMeans是一种常用的数据聚类算法,用于将数据集分成k个簇,使得每个数据点属于最近的簇,并且每个簇的中心与该簇内所有数据点的距离的平方和最小。在机器学习、数据挖掘中,聚类算法是非常重要的一种方法,帮助我们有效地进行数据可视化和挖掘。

Sklearn.cluster.KMeans 函数使用方法

在使用 KMeans 函数前,需要先安装scikit-learn库,可以使用pip或conda进行安装。

1.导入所需库

from sklearn.cluster import KMeans
import numpy as np

2.创建数据集

X = np.array([
    [1, 2],
    [1, 4],
    [1, 0],
    [10, 2],
    [10, 4],
    [10, 0]
])

3.创建KMeans模型

# n_clusters指定聚类的个数
model = KMeans(n_clusters=2)

4.训练模型

model.fit(X)

5.获取预测结果

labels = model.predict(X)

labels是一个一维的数组,表示每个数据点所属的簇编号。比如,假设有两个靠近的簇是红色和蓝色,聚类后结果如下:

[0, 0, 0, 1, 1, 1]

6.获取聚类中心

centers = model.cluster_centers_

centers是一个二维的数组,表示每个簇的中心点坐标。比如,上述例子中,centers可以是:

[[ 1.,  2.],
 [10.,  2.]]

Sklearn.cluster.KMeans 函数实例说明

实例1:将iris数据集分为三类

from sklearn.cluster import KMeans
from sklearn.datasets import load_iris

iris = load_iris()
X, y = iris.data, iris.target

kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)

print(kmeans.labels_)

上述代码使用KMeans算法将鸢尾花数据集分为3类,输出每个数据点所属的簇编号。

实例2:随机生成点并进行聚类

import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 随机生成数据点
X = np.random.rand(100, 2)
plt.scatter(X[:, 0], X[:, 1])
plt.show()

# 聚类
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)

# 显示聚类结果
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()

上述代码随机生成100个数据点,并使用KMeans算法将数据点分为3类,通过可视化的方式显示聚类结果。