使用matplotlib来绘制聚类图形

直接上代码
# 导入相关包
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from matplotlib import pyplot as plt
import numpy as np

# 创建用于聚类的数据,1000条数据,2个特征,8个质心,随机模式1
x, y = make_blobs(n_samples=1000, n_features=2, centers=8, random_state=1)

# 生成聚类的模型,6个质心
model = KMeans(n_clusters=6)

# 训练模型
model.fit(x, y)

# 使用特征值来绘制决策边界,先获取特征的最大值与最小值
x_min, x_max = x[:, 0].min() - 1, x[:, 0].max() + 1
y_min, y_max = x[:, 1].min() - 1, x[:, 1].max() + 1

# 通过获取的x和y的值来生成要绘制的每一个点的坐标,h来设置步长(精度)
h = 0.05
xx = np.arange(x_min, x_max)
yy = np.arange(y_min, y_max)

# 使用np的函数来使x和y变成一个二维矩阵坐标
juece = np.c_[xx.reshape(1, xx.size)[0], yy.reshape(1, xx.size)[0]]

# 使用模型来预测每一个坐标的值(方便后面设置图形的颜色)
z = model.predict(juece)
# 还需要把所有的颜色值变为和xx,yy相符合的矩阵形状
z = z.reshape(xx.shape)

# 绘制图形, cmap设置颜色表(可以通过遍历plt.cm.cmap_d.keys()来查看有哪些颜色表)
plt.figure()
plt.pcolormeash(xx, yy, z, cmap='OrRd')

# 决策边界绘制之后需要把原来的点绘制出来
plt.scatter(x[:, 0], x[:, 1], c=y)

plt.show()

效果图

posted @ 2021-10-31 10:34  耿集  阅读(442)  评论(0)    收藏  举报