&roids_diew=recaltroids(nba)
&r_troids_troids_dict,
&roids_diew)
In[27]:visualize_ba,um)
图5-7
上述过程完整地实现了k-平均聚类的算法。前面已经提到过这种聚类方法的结果与初始中心的选取有关,只进行一次这样的聚类,聚类结果会有一定的偏差。Python的sklearn库针对简单的k-平均聚类做了优化。例如,通过多次选取初始中心,参考多次聚类的结果输出最终的聚类结果,从而改善聚类效果。通过调用sklearn库来实现k-平均聚类只需要设置聚类的个数,数行代码就可以完成聚类工作。代码和相应的输出结果如图5-8所示。
In[1]:fromsklearKMeans
In[2]:importpandasaspd
In[3]:importmatplotlib。pyplotasplt
In[4]:defvisualize_clusters(df,um):
colors=['b','g','r','c','m','y','k']
fe(um):
clustered_df=df[df['cluster']==i]
plt。scatter(clustered_df['ppg'],clustered_df
['atr'],c=colors[i])
plt。xlabel('Pame',fontsize=12)
plt。ylabel('AssistTurio',fontsize=12)
plt。show()
In[5]:um=5
In[6]:nba=pd。read_csv('nba_2013。csv')
In[7]:kmeans=KMeans(er_num)
I(nba[['ppg','atr']])
Out[8]:
KMeans(algorithm='auto',copy_x=True,init='k-means++',max_iter
=300,n_clusters=5,n_init=10,n_jobs=1,prepute_distances='aut
o',raol=0。0001,verbose=0)
In[9]:nba['eans。labels_
In[10]:visualize_ba,um)
图5-8