聚类算法(一)
-
查看
-
案例1
import sklearn.cluster as sc import numpy as np import matplotlib.pyplot as mp # 一维数据 划分成3类 找点 三维 四维 一样的画法。 # 分类(class)与聚类(cluster)不同(物以类聚),分类是有监督学习模型,聚类属于无监督学习模型。聚类讲究使用一些算法把样本划分为n个群落。一般情况下,这种算法都需要计算欧氏距离 # K均值算法 KMeans 聚类算法 # 第一步:随机选择k个样本作为k个聚类的中心,计算每个样本到各个聚类中心的欧氏距离,将该样本分配到与之距离最近的聚类中心所在的类别中。 # 第二步:根据第一步所得到的聚类划分,分别计算每个聚类的几何中心,将几何中心作为新的聚类中心,重复第一步,直到计算所得几何中心与聚类中心重合或接近重合为止。 # 读取样本# 读取样本 一列x 一列y 没有输出 人为分成4堆 x = np.loadtxt('.\multiple3.txt', delimiter=',') # 划分3个聚类 model = sc.KMeans(n_clusters=3) # 拟合 训练 model.fit(x) # 结果一样 预测某个点 是属于哪一类的。。。 如果有了新的样本点 。你再去调用predict 方法去预测 属于 哪一类 。。。。 # pred_y = model.predict(x) # 0 1 2 3 pred_y = model.labels_ # 打印出所有的label print(pred_y, "聚成多少类") print(model.cluster_centers_, " 聚类中心") # 输出每个点所属的聚类中心 for i in range(len(x)): print("Point:", x[i], " belongs to cluster:", pred_y[i], " with center:", model.cluster_centers_ [pred_y[i]]) # 在这个例子中,我们使用了scikit-learn库中的KMeans类,将数据集X分成3个聚类。我们通过调用fit()方法来训练KMeans模型, # 然后使用cluster_centers_属性获取聚类中心。最后,我们使用labels_属性获取每个点所属的聚类中心标签,并使用这些标签来确定每个点所属的聚类中心。 # 绘制图像 mp.figure('KMeans', facecolor='lightgray') mp.title('KMeans', fontsize=16) # 绘制分类边界线 n = 500 l, r = x[:,0].min()-1, x[:,0].max()+1 b, t = x[:,1].min()-1, x[:,1].max()+1 grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n)) # 根据业务,模拟预测 mesh_x = np.column_stack((grid_x.ravel(), grid_y.ravel())) grid_z = model.predict(mesh_x) # 把grid_z 变维:(500,500) grid_z = grid_z.reshape(grid_x.shape) mp.pcolormesh(grid_x, grid_y, grid_z, cmap='gray') mp.scatter(x[:,0], x[:,1], c=pred_y, cmap='brg_r', label='Samples', s=80) centers = model.cluster_centers_ # 获取训练结果的聚类中心 图四个中心点 # 获取训练结果的聚类中心 print(centers) mp.scatter(centers[:,0], centers[:,1], s=1000, marker='+', color='yellow', label='centers') # mp.scatter(centers[:,0], centers[:,1], s=1000,marker='+', color='yellow', label='centers') mp.legend() mp.show()
查看详情
- 控制台打印
[1 1 0 2 1 2 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 0 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 2 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 2 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2 1 1 0 2] 聚成多少类 [[5.91196078 2.04980392] [2.40645833 3.51822917] [6.87283019 5.66490566]] 聚类中心 Point: [ 1.96 -0.09] belongs to cluster: 1 with center: [2.40645833 3.51822917] Point: [2.84 3.16] belongs to cluster: 1 with center: [2.40645833 3.51822917] Point: [4.74 1.84] belongs to cluster: 0 with center: [5.91196078 2.04980392] //。。。 Point: [7.26 5.35] belongs to cluster: 2 with center: [6.87283019 5.66490566] [[5.91196078 2.04980392] [2.40645833 3.51822917] [6.87283019 5.66490566]]
- 输出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律