k-means 实例 sklearn
时间: 2023-05-04 08:02:55 浏览: 74
k-means是一种常用的聚类算法,它将数据点分为k个簇,并且每个簇的中心点尽可能接近簇内的数据点。这个算法最常见的实现是用迭代的方式,先随机选择k个点作为中心,然后不断重复以下过程:对于每个数据点,计算其到k个中心点的距离,将其分配到距离最近的簇中,再根据新的簇来更新中心点,直到中心点不再发生变化,即达到收敛。
在Python中,可以使用scikit-learn库实现k-means算法。使用该库,我们可以轻松地导入数据集,并使用KMeans类来执行k-means聚类。具体步骤如下:
1.导入sklearn和需要使用的数据集,将数据集转换为numpy数组。
2.使用KMeans类实例化一个模型对象,并选择需要的超参数,如簇数k和随机数种子等。
3.使用fit()方法训练模型,并对数据集执行聚类操作。
4.从模型对象中获取聚类结果,并在图形化界面中呈现。
以下是k-means在Python中的代码实例:
```python
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
# 生成模拟数据集
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.6, random_state=0)
plt.scatter(X[:,0], X[:,1])
# K-means 聚类
model = KMeans(n_clusters=4, random_state=0)
model.fit(X)
y_hat = model.predict(X)
# 将聚类结果可视化
plt.scatter(X[y_hat == 0,0], X[y_hat == 0,1], c='red')
plt.scatter(X[y_hat == 1,0], X[y_hat == 1,1], c='blue')
plt.scatter(X[y_hat == 2,0], X[y_hat == 2,1], c='green')
plt.scatter(X[y_hat == 3,0], X[y_hat == 3,1], c='purple')
plt.title('K-means聚类结果示意图')
plt.show()
```
运行该代码后,即可得到一个K-means聚类结果的可视化图像,其中每个颜色对应一个簇,可以清晰地看出数据点被划分到不同的簇中。同时,也可以通过调整不同的参数来获得不同的聚类结果,以更好地理解K-means算法的特点和局限。