昨天介绍完kmeans演算法,今天就要实际写程序:
首先先创建一笔资料并绘图:
程序如下:
import numpy as np
label_data=np.array([[45,59],[52,63],[18,52],[72,24],[20,36],[12,39],[53,23],[52,70],[45,63],[24,55],[33,46],[28,30],[29,54],[55,14],[61,8],[69,7],[64,19],[51,66]])
label_data_x=[label_data[i][0] for i in range(len(label_data))]
label_data_y=[label_data[i][1] for i in range(len(label_data))]
print(label_data_x)
print(label_data_y)
import matplotlib.pyplot as plt
plt.scatter(label_data_x,label_data_y)
plt.show()
结果如下:
之後写出起始中心点位置:(设定d=3-->分3群)
#先决定要分几群
d=3
#由於数据x,y最大值为70左右
import random
x_y_used=[]
color_used=[]
#设定种子
random.seed(150)
for i in range(d):
#避免重复中心点
while True:
x=random.randint(0,70)
y=random.randint(0,70)
if [x,y] not in x_y_used:
break
x_y_used.append([x,y])
#避免重复颜色
while True:
color_use = ["#"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]
if color_use not in color_used:
color_used.append(color_use)
break
plt.scatter(x,y,color=color_use)
plt.show()
结果如图:
接下来针对这张图的中心点我们去算欧式距离:(程序码如下)
#帮资料分类
for i in range(len(label_data_x)):
k=[]
for j in range(d):
#计算欧式距离
value_k=np.sqrt((x_y_used[j][0]-label_data_x[i])**2+(x_y_used[j][1]-label_data_y[i])**2)
k.append(value_k)
#取最小
tmp = min(k)
index = k.index(tmp)
print("第",i+1,"笔资料为第",index+1,'类')
#画在图上
plt.scatter(label_data_x[i],label_data_y[i],color=color_used[index])
plt.show()
第 1 笔资料为第 1 类
第 2 笔资料为第 1 类
第 3 笔资料为第 1 类
第 4 笔资料为第 2 类
第 5 笔资料为第 3 类
第 6 笔资料为第 3 类
第 7 笔资料为第 2 类
第 8 笔资料为第 1 类
第 9 笔资料为第 1 类
第 10 笔资料为第 1 类
第 11 笔资料为第 1 类
第 12 笔资料为第 3 类
第 13 笔资料为第 1 类
第 14 笔资料为第 2 类
第 15 笔资料为第 2 类
第 16 笔资料为第 2 类
第 17 笔资料为第 2 类
第 18 笔资料为第 1 类
结果如图:
接下来我们就可以利用这些新的点去找中心点,然後再算距离分类,直到分类不再变动为止
好,今天讲解关於kmeans演算法程序一半,明天就要就继续後半段的程序码
狐狸抱着男子冲到了木屋里,顿时两个人都着起了火,男子不屑的冷笑,用手拨了拨身上的火焰,火焰瞬间被他吸收,因为火是他发出,它当然可以吸收,正当他得意看向狐狸却发现狐狸虽然被火焰燃烧,却像没事一般,而伤口在火烧之後结痂,不再流血,男子用一种奇怪的表情望向着狐狸,随即他弹了一个响指,火焰瞬间熄灭,只剩焦黑的木屋和对峙的两人,正当两人僵持不下时,屋外传来了歌声
--|你相信了什麽?你忘记了什麽?|-- CS.MM
<<: [2021铁人赛 Day17] General Skills 14
写单元测试可以检查程序是否按预期执行,Flask 可以模拟发送请求并回传资料 应当尽可能多进行测试,...
审核跟踪通常被视为侦查控件。查看审核跟踪可以发现或发现入侵或不合规的活动。 根据ISO 14641:...
替代user之中的roles显示 我们在昨天已经可以显示我们增加的使用,但是在检阅之中,并没有显示正...
第二天 各位点进来的朋友,你们好阿 一样废话不多说直接上内容啦~~ ----------------...
今天写一个简单的搜寻栏样式 有时候会在navbar上看到那种搜寻键,按下去後搜寻栏会拉开变出可以打字...