基于Jupyter 完成聚类输出可视化效果+Excel数据处理输出分布饼图

一、根据计科18大类学生的成绩数据(选取两个特征:1、平均成绩GPA; 2、面向对象程序设计成绩),将计科18大类学生分成 3~4个类型。将其可视化显示出来

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

#读取用于聚类的数据,并创建数据表
loan_data = pd.read_excel("D:\Study\人工智能与机器学习\data.xls")
#查看数据表
loan_data
学号姓名平均学分绩面向对象程序设计A排名
0631807060214饶雪锋89.4195.001
1631804110127杨泽来89.6979.002
2631810040220申霄剑89.6293.003
3631807060229吴佳豪89.2192.004
4631704141028姚伯骏88.8292.005
5631862020224肖思瑶88.2381.006
6631801150511刘博涵88.0688.067
7631703070312何俊辉86.8186.008
8631807060314刘俊昊86.6290.009
9631807060517李启欢86.2693.0010
10631807060106陈雨85.0076.0011
11631807060204韩溪84.4789.0012
12631802050326张金城84.0387.0013
13631801130235朱珩瑕83.2969.0015
14631801151026颜茁83.3291.0014
15631807060234张耀升83.3089.0016
16631805010310蒋金杭83.1882.0017
17631807060425王秋红82.9683.0018
18631807060128杨欣萌82.8185.0019
19631807060309李佳骏82.5390.0020
20631809160510雷洋80.6689.0021
21631807060529杨晗82.3884.0022
22631807060501曹文静82.3090.0023
23631801110327杨九坤82.0170.0024
24631862020217汪春节82.8571.0026
25631807060327谢惠子81.7580.0025
26631807060535朱继冀81.8584.0027
27631807060305傅冰林81.5885.0028
28631804110409李培玉81.6674.0029
29631807060304戴佳良81.3987.0030
..................
168631707060523王渝熙69.6972.00169
169631807060232熊钊辉68.6168.00170
170631807060127许雯著70.2261.00171
171631607040319喻刚桥69.6463.00172
172631807060510何渝69.9875.00173
173631807060509何瑞70.1469.00174
174631807060318谭浩69.4571.00175
175631707060214罗英杰66.4184.00176
176631707060324肖思睿68.8779.00177
177631807060201曹淞68.8476.00178
178631807060124吴迪69.0165.00179
179631707060329殷梦萍63.5779.00180
180631807060203邓勇68.7780.00181
181631807060523潘祥68.5173.00182
182631707060416潘茂林66.2684.00183
183631807060635左希伟69.1555.00184
184631707060232张鑫63.5763.57185
185631707060323吴启立68.3371.00186
186631807060520刘旭65.7871.00187
187631807060614米广龙63.5756.00188
188631707060120王斌58.8560.00189
189631807060110冯钰程67.8778.00190
190631707060430张君耀65.5063.00191
191631807060219田小龙66.7976.00192
192631707060326辛子轩57.2560.00193
193631807060120彭思胜65.3165.00194
194631707060522王荭57.8372.00195
195631807060134周雄伟63.3555.00196
196631807060620田原61.9660.00197
197631807060628杨闰60.7760.00198

198 rows × 5 columns

#挑选出前两个维度作为x轴和y轴,你也可以选择其他维度
data = loan_data.values[:,2:4]
x_axis = loan_data.values[:,2]
y_axis = loan_data.values[:,3]
#这里已经知道了分3类,其他分类这里的参数需要调试
model = KMeans(n_clusters=3)

#这里已经知道了分4类,其他分类这里的参数需要调试
#model = KMeans(n_clusters=4)
#训练模型
model.fit(data)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
       n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
       random_state=None, tol=0.0001, verbose=0)
#选取数据,进行预测
prddicted_label= model.predict([[77.67,82]])
#预测全部数据
all_predictions = model.predict(data)
#打印出来数据的聚类散点图
plt.scatter(x_axis, y_axis, c=all_predictions)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1v036Cx-1589359020166)(output_8_0.png)]

二、根据18级物联网分流名单,计算物联1801、物联1802两个班的学生的学生类型占比,输出物联18两个班的学生类型分布饼图。

#设置中文显示
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

loan_data1 = pd.read_excel("D:\Study\人工智能与机器学习\data1.xlsx")
#查看数据表
loan_data1 
物联网工程专业分流学生名单Unnamed: 1Unnamed: 2Unnamed: 3Unnamed: 4Unnamed: 5Unnamed: 6
0序号学号姓名原专业原班级新专业新班级
11631807060113金孝文计算机类计算机类1801班物联网工程物联网1801班
22631807060131张宸君计算机类计算机类1801班物联网工程物联网1801班
33631807060129杨耀宇计算机类计算机类1801班物联网工程物联网1801班
44631807060117刘文威计算机类计算机类1801班物联网工程物联网1801班
55631807060112何耀坤计算机类计算机类1801班物联网工程物联网1801班
66631807060114李德坤计算机类计算机类1801班物联网工程物联网1801班
77631807060124吴迪计算机类计算机类1801班物联网工程物联网1801班
88631807060110冯钰程计算机类计算机类1801班物联网工程物联网1801班
99631807060120彭思胜计算机类计算机类1801班物联网工程物联网1801班
1010631807060134周雄伟计算机类计算机类1801班物联网工程物联网1801班
1111631805010228袁金华计算机类计算机类1804班物联网工程物联网1801班
1212631807060409蒋冬东计算机类计算机类1804班物联网工程物联网1801班
1313631807060403陈高玉计算机类计算机类1804班物联网工程物联网1801班
1414631807060420石玉松计算机类计算机类1804班物联网工程物联网1801班
1515631807060428伍潘计算机类计算机类1804班物联网工程物联网1801班
1616631807060410蒋明庆计算机类计算机类1804班物联网工程物联网1801班
1717631807060404陈浩澜计算机类计算机类1804班物联网工程物联网1801班
1818631807060412雷美龙计算机类计算机类1804班物联网工程物联网1801班
1919631807060405陈金锐计算机类计算机类1804班物联网工程物联网1801班
2020631807060417聂德名计算机类计算机类1804班物联网工程物联网1801班
2121631807060621汪培豪计算机类计算机类1806班物联网工程物联网1801班
2222631807060615彭才灿计算机类计算机类1806班物联网工程物联网1801班
2323631807060634郑明镜计算机类计算机类1806班物联网工程物联网1801班
2424631807060630张宝玉计算机类计算机类1806班物联网工程物联网1801班
2525631807060619谭百鸣计算机类计算机类1806班物联网工程物联网1801班
2626631807060628杨闰计算机类计算机类1806班物联网工程物联网1801班
2727631807060614米广龙计算机类计算机类1806班物联网工程物联网1801班
2828631707060324肖思睿计算机类计算机类1806班物联网工程物联网1801班
2929631807060635左希伟计算机类计算机类1806班物联网工程物联网1801班
........................
405631807060201曹淞计算机类计算机类1802班物联网工程物联网1802班
416631807060223王定文计算机类计算机类1802班物联网工程物联网1802班
427631807060203邓勇计算机类计算机类1802班物联网工程物联网1802班
438631707060232张鑫计算机类计算机类1802班物联网工程物联网1802班
449631807060219田小龙计算机类计算机类1802班物联网工程物联网1802班
4510631807060304戴佳良计算机类计算机类1803班物联网工程物联网1802班
4611631807060306高彪计算机类计算机类1803班物联网工程物联网1802班
4712631807060325吴锟计算机类计算机类1803班物联网工程物联网1802班
4813631807060315罗清文计算机类计算机类1803班物联网工程物联网1802班
4914631707060326辛子轩计算机类计算机类1803班物联网工程物联网1802班
5015631807060318谭浩计算机类计算机类1803班物联网工程物联网1802班
5116631707060329殷梦萍计算机类计算机类1803班物联网工程物联网1802班
5217631607040319喻刚桥计算机类计算机类1803班物联网工程物联网1802班
5318631707060323吴启立计算机类计算机类1803班物联网工程物联网1802班
5419631807060517李启欢计算机类计算机类1805班物联网工程物联网1802班
5520631807060524宋亚东计算机类计算机类1805班物联网工程物联网1802班
5621631807060512霍承叙计算机类计算机类1805班物联网工程物联网1802班
5722631807060507范俊成计算机类计算机类1805班物联网工程物联网1802班
5823631807060505杜远航计算机类计算机类1805班物联网工程物联网1802班
5924631807060515况澳杰计算机类计算机类1805班物联网工程物联网1802班
6025631807060509何瑞计算机类计算机类1805班物联网工程物联网1802班
6126631707060523王渝熙计算机类计算机类1805班物联网工程物联网1802班
6227631707060506何亮计算机类计算机类1805班物联网工程物联网1802班
6328631807060510何渝计算机类计算机类1805班物联网工程物联网1802班
6429631707060214罗英杰计算机类计算机类1805班物联网工程物联网1802班
6530631807060520刘旭计算机类计算机类1805班物联网工程物联网1802班
6631631707060120王斌计算机类计算机类1805班物联网工程物联网1802班
6732631707060416潘茂林计算机类计算机类1805班物联网工程物联网1802班
6833631807060523潘祥计算机类计算机类1805班物联网工程物联网1802班
6934631707060509黄文杰计算机类计算机类1805班物联网工程物联网1802班

70 rows × 7 columns

#统计物联网工程班级人数
s1=0
s2=0
for  s in loan_data1.values[:,6]:#从新班级列读取数据
    if s=='物联网1801班':
         s1+=1
    elif s=='物联网1802班':
        s2+=1
        
labels = ['物联网1801班','物联网1802班']      
sizes = [s1,s2]
explode = [0,0]
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=True,startangle=90)
plt.title('物联网工程班级人数分布图')
plt.axis('equal')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1aO9Rdfh-1589359020177)(output_12_0.png)]

# #统计物联18两个班的学生类型分布饼图
s11=0
s21=0
s31=0
s41=0
s51=0
for  s in loan_data.values[:,3]:#从面向对象程序设计A 列读取数据
    if s>=90:
         s11+=1
    elif 80<=s<90:
        s21+=1
    elif 70<=s<80:
        s31+=1
    elif 60<=s<70:
        s41+=1
    elif s<60:
        s51+=1
        
labels1 = ['优','良','中','差','不及格']      
sizes1 = [s11,s21,s31,s41,s51]
explode1 = [0,0,0,0,0]
plt.pie(sizes1,explode=explode1,labels=labels1,autopct='%1.1f%%',shadow=True,startangle=90)
plt.title('物联18两个班的学生类型分布饼图')
plt.axis('equal')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjp4t0Jb-1589359020178)(output_13_0.png)]

  • 3
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值