【Python数据分析学习实例】篮球运动位置分析

问题描述

在篮球运动中,一般情况下,控球后卫与得分后卫的助攻数较多,小前锋的得分数较多,而大前锋与中锋的助攻数与得分数较少。表中所示为21名篮球运动员每分钟助攻数和每分钟得分数的数据集,请运用K-Means聚类算法将这21名篮球运动员划分5类,并画图判断他们分别属于什么位置。数据文件下载

assists_per_minutepoints_per_minute
10.08880.5885
20.13990.8291
30.07470.4974
40.09830.5772
50.12760.5703
60.16710.5835
70.19060.5276
80.10610.5523
90.24460.4007
100.1670.477
110.24850.4313
120.12270.4909
130.1240.5668
140.14610.5113
150.23150.5113
160.04940.559
170.11070.4799
180.25210.5735
190.10070.6318
200.10670.4326
210.19560.428

代码实现

问题分析

  • 源数据展示
data

在这里插入图片描述

  • 数据切割,得到第2列至第3列以及所有行的数据
data.iloc[:,1:]

在这里插入图片描述

  • 进行K-means聚类以及数据预测
clf = KMeans(n_clusters=5)  #表示输出将数据集分成类簇数为5的聚类
#输出聚类预测结果,对X聚类,20行数据,每个y_pred对应X的一行或一个孩子,聚成3类,类标为0、1、2
y_pred = clf.fit_predict(X)  
print(y_pred)  #输出结果

在这里插入图片描述

  • 对聚类的预测结果画出散点图
plt.scatter(x, y, c=y_pred, marker='o')
plt.title("Kmeans-Basketball Data")  #表示图形的标题为Kmeans-heightweight Data
plt.xlabel("assists_per_minute")  #表示图形x轴的标题
plt.ylabel("points_per_minute")  #表示图形y轴的标题
plt.legend(["Rank"])  #设置右上角图例
plt.show()  #显示图形

完整代码

import numpy as np  
import pandas as pd
import matplotlib.pyplot as plt  
from sklearn.cluster import KMeans

# 读取数据
data = pd.read_csv("data.csv")
X = data.iloc[:,1:]
print(X)


#K-means聚类
clf = KMeans(n_clusters=5)  #表示输出将数据集分成类簇数为5的聚类
#输出聚类预测结果,对X聚类,20行数据,每个y_pred对应X的一行或一个孩子,聚成3类,类标为0、1、2
y_pred = clf.fit_predict(X)  
print(y_pred)  #输出结果


x = X.iloc[:,0]  #获取第1列的值
print(x)  
y = X.iloc[:,1]  #获取第2列的值
print(y)
 
# 可视化操作
#绘制散点图(scatter),横轴为x,获取的第1列数据;纵轴为y,获取的第2列数据;
#c=y_pred对聚类的预测结果画出散点图,marker='o'说明用点表示图形
plt.scatter(x, y, c=y_pred, marker='o')
plt.title("Kmeans-Basketball Data")  #表示图形的标题为Kmeans-heightweight Data
plt.xlabel("assists_per_minute")  #表示图形x轴的标题
plt.ylabel("points_per_minute")  #表示图形y轴的标题
plt.legend(["Rank"])  #设置右上角图例
plt.show()  #显示图形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃离地狱的恶魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值