1024xp核工厂caoliu最新地址

1024xp核工厂caoliu最新地址

为了方便显示数据,我们暂且只使用这几列数据,其它数据也是可以使用的,维数太多了不方便展示,这里我们通过每位球员的平均得分和平均助攻数来作为特征衡量一个人进行聚类,意思是根据这个指标将人员进行自动分类,好比平时我们考试得分,班主任总是根据每个人的考试得分将本来就没几个人的班分为上等生、中等生、下等生,现在发现老师这么分等级是带有很大偏见的,毕竟社会考量一个人不仅仅是根据分数,而是一个人的总和能力。
平均得分(ppg) = 总得分(pts) / 打球场次(g)
平均助攻 = 总助攻(ast) / 助攻失误数量 (tov)

   以下为手动实现聚类分析的代码,实现起来还是比较简单的,第一步是随机初始化n个质心,然后不断计算每个样本点到质心的距离,不断更新质心位置,如此循环往复,直到质心不再变化为止,即达到了我们的分类效果。

控球控制筛选 后卫人员

point_guards = nba[nba['pos']=='PG']

每场球赛得分

point_guards['ppg'] = point_guards['pts'] / point_guards['g']

平均助攻数量

point_guards = point_guards[point_guards['tov'] != 0 ]
point_guards['atr'] = point_guards['ast'] / point_guards['tov']
散点图展示如下:
plt.scatter(point_guards['ppg'],point_guards['atr'],c='g')
plt.title('Point Guards')
plt.xlabel('Points per Game',fontsize=15)
plt.ylabel('Radio',fontsize=15)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
打球平均得分与助攻平均数散点图如下:

随机初始化5个质心

num_clusters = 5
random_initial_points = np.random.choice(point_guards.index,size=num_clusters)
centroids = point_guards.loc[random_initial_points]
print centroids

红色显示质心

plt.scatter(point_guards['ppg'],point_guards['atr'],c='y')
plt.scatter(centroids['ppg'],centroids['atr'],c='red')
plt.title('Centroids')
plt.xlabel('Points per Game',fontsize=15)
plt.ylabel('Radio',fontsize=15)
plt.show()

猜你喜欢

转载自blog.51cto.com/13778622/2122414