天才一秒记住【畅想小说网】地址:http://www.cxtra.net
第二步,将每个元素分配给距离其最近的中心,生成5个簇。
第三步,重新计算每个簇的中心。
因为这两个步骤是需要反复迭代的,为了代码的易用性,下面先以函数的形式定义好这两个步骤要实现的功能,然后在迭代过程中就可以通过反复调用这些函数来完成相应的工作了。
首先定义一个函数,以字典的形式存储中心,字典键值是每个簇的名称,字典的值是对应中心的坐标。
Iroids_to_ditroids):
diary={}
ter=0
forindex,rowiroids.iterrows():
ates=[row['ppg'],row['atr']
diary[ter]=ates
ter+=1
&ionary
再定义用来计算点到中心欧式距离的函数。
这里导入了用于数学计算的math库。
In[11]:importmath
In[12]:defcalculate_distaroid,player_value):
root_distance=0
fe(0,leroid)):
differeroid[x]-player_value[x]
squared_difference=difference**2
root_distance+=squared_difference
euclid_distah.sqrt(root_distance)
&urneuclid_distance
定义函数用来计算每个点到中心的距离,并把它分配到距离最近的中心所在的那个簇。
In[13]:defassign_to_cluster(row):
player=[row['ppg'],row['atr']]
&=-1
clus_id=-1
fortroidiroids_dict.items():
distae_distaroid,player)
iflowest_dist==-1:
&=distance
clus_id=clu_id
&ance0:
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!