这篇文章直接给出上次关于kmeans聚类的篮球远动员数据分析案例,同时介绍这次作业同学们完成的图例,最后介绍matplotlib包绘图的优化知识。
前文推荐:
希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解。如果文章中存在不足或错误的地方,还请海涵~
这里不再赘述,详见第二篇文章,直接上代码,这是我的学生完成的作业。
数据集:
篮球运动员数据,每分钟助攻和每分钟得分数。通过该数据集判断一个篮球运动员属于什么位置(控位、分位、中锋等)。完整数据集包括5个特征,每分钟助攻数、运动员身高、运动员出场时间、运动员年龄和每分钟得分数。
完整代码:
运行结果:
从图中可以看到聚集成三类,红色比较厉害,得分很高;中间蓝色是一类,普通球员;右小角绿色是一类,助攻高得分低,是控位。

代码分析:
表示在sklearn中处理kmeans聚类问题,用到 sklearn.cluster.kmeans 这个类。
x是数据集,包括2列20行,即20个球员的助攻数和得分数。
表示输出完整kmeans函数,包括很多省略参数,将数据集分成类簇数为3的聚类。
输出聚类预测结果,对x聚类,20行数据,每个y_pred对应x的一行或一个孩子,聚成3类,类标为0、1、2。
输出结果:[0 2 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1]
matplotlib.pyplot是用来画图的方法,matplotlib是可视化包。
获取第1列的值, 使用for循环获取 ,n[0]表示x第一列。
获取第2列的值,使用for循环获取 ,n[1]表示x第2列。
绘制散点图(scatter),横轴为x,获取的第1列数据;纵轴为y,获取的第2列数据;c=y_pred对聚类的预测结果画出散点图,marker='o'说明用点表示图形。
表示图形的标题为kmeans-heightweight data。
表示图形x轴的标题。
表示图形y轴的标题。
设置右上角图例。
表示显示图形。
下面简单展示学生做的作业及分析,感觉还是不错,毕竟才上几节课而且第一次作业,希望后面的作业更加精彩吧。因为学生的专业分布不同,所以尽量让学生设计他们专业的内容。
eg 遗传学身高体重数据
第一列表示孩子的身高,单位cm;第二列表示孩子的体重,单位kg。从上图可以看出,数据集被分为了三类。绿色为一类、蓝色为一类,红色为一类。
eg 微博数据集
第一列代表微博中某条信息的转发量,第二列代表微博中某条信息的评论数。从上图可以看出,总共分为3类,共三种颜色,绿色一层说明该信息转发量与评论数都很高。
eg 上市公司财务报表
第一列表示公司利润率;第二列表示公司资产规模。从上图可以看出,总共分为4类,共四种颜色。暗红色为资产规模最大,依次至蓝色资产规模减小。
eg 世界各国家人均面积与土地面积
第一列表示各国家的人均面积(人/ 平方公里);第二列表示各国家的土地面积(万平方公里)。从上图可以看出,总共分为3类,共三种颜色。红色表示的国家相对来说最拥挤,可能是孟加拉这样土地面积少且人口众多的国家;蓝色就是地广人稀的代表,比如俄罗斯、美国、、墨西哥、巴西;绿色表示人口密度分布比较平均的国家。
eg employee salaries数据集
第一列表示员工工资;第二列表示员工年龄数。从上图可以看出,总共分为5类,共5种颜色。总体呈现正相关性,年龄越大,工资越高;除个别外,总体正线性关系。
eg 学生英语成绩数据集
第一列表示学生英语平时成绩;第二列表示学生英语期末成绩。从上图可以看出,总共分为4类,共四种颜色。黄色一层,平时成绩和末考成绩都很高,属于“学霸”级别的人物;其次,蓝色一层和红色一层;最后,天蓝色一层,暂且称之为“学渣”。
matplotlib代码的优化:
1.第一部分代码是定义x数组,实际中是读取文件进行的,如何实现读取文件中数据再转换为矩阵进行聚类呢?
2.第二部分是绘制图形,希望绘制不同的颜色及类型,使用legend()绘制图标。
假设存在数据集如下图所示:data.txt
现需要获取第一列每分钟助攻数、第五列每分钟得分数存于矩阵中。
代码如下:
输出结果如下图所示:三个层次很明显,而且右上角也标注。
可视化部分强烈推荐资料:
下面是常见遇到的几个问题:
1.spyder软件如果editor编辑框不在,如何调出来。
2.会缺少一些第三方包,如lda,如何导入。使用cd ..去到c盘根目录,cd去到anaconda的scripts目录下,输入"pip install selenium"安装selenium相应的包,"pip install lda"安装lda包。
学生告诉我另一个更方便的方法:
3.运行时报错,缺少console,点击如下。
4.如果spyder安装点击没有反应,重新安装也没有反应,建议在运行下试试。
实在不行卸载再重装:pip uninstall spyder
pip install spyder
5.spyder如何显示绘制matplotlib中文。
(by:eastmount 2016-10-12 深夜3点半 )