直接上代码
# 导入相关包
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()
效果图