基于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 排名
0 631807060214 饶雪锋 89.41 95.00 1
1 631804110127 杨泽来 89.69 79.00 2
2 631810040220 申霄剑 89.62 93.00 3
3 631807060229 吴佳豪 89.21 92.00 4
4 631704141028 姚伯骏 88.82 92.00 5
5 631862020224 肖思瑶 88.23 81.00 6
6 631801150511 刘博涵 88.06 88.06 7
7 631703070312 何俊辉 86.81 86.00 8
8 631807060314 刘俊昊 86.62 90.00 9
9 631807060517 李启欢 86.26 93.00 10
10 631807060106 陈雨 85.00 76.00 11
11 631807060204 韩溪 84.47 89.00 12
12 631802050326 张金城 84.03 87.00 13
13 631801130235 朱珩瑕 83.29 69.00 15
14 631801151026 颜茁 83.32 91.00 14
15 631807060234 张耀升 83.30 89.00 16
16 631805010310 蒋金杭 83.18 82.00 17
17 631807060425 王秋红 82.96 83.00 18
18 631807060128 杨欣萌 82.81 85.00 19
19 631807060309 李佳骏 82.53 90.00 20
20 631809160510 雷洋 80.66 89.00 21
21 631807060529 杨晗 82.38 84.00 22
22 631807060501 曹文静 82.30 90.00 23
23 631801110327 杨九坤 82.01 70.00 24
24 631862020217 汪春节 82.85 71.00 26
25 631807060327 谢惠子 81.75 80.00 25
26 631807060535 朱继冀 81.85 84.00 27
27 631807060305 傅冰林 81.58 85.00 28
28 631804110409 李培玉 81.66 74.00 29
29 631807060304 戴佳良 81.39 87.00 30
... ... ... ... ... ...
168 631707060523 王渝熙 69.69 72.00 169
169 631807060232 熊钊辉 68.61 68.00 170
170 631807060127 许雯著 70.22 61.00 171
171 631607040319 喻刚桥 69.64 63.00 172
172 631807060510 何渝 69.98 75.00 173
173 631807060509 何瑞 70.14 69.00 174
174 631807060318 谭浩 69.45 71.00 175
175 631707060214 罗英杰 66.41 84.00 176
176 631707060324 肖思睿 68.87 79.00 177
177 631807060201 曹淞 68.84 76.00 178
178 631807060124 吴迪 69.01 65.00 179
179 631707060329 殷梦萍 63.57 79.00 180
180 631807060203 邓勇 68.77 80.00 181
181 631807060523 潘祥 68.51 73.00 182
182 631707060416 潘茂林 66.26 84.00 183
183 631807060635 左希伟 69.15 55.00 184
184 631707060232 张鑫 63.57 63.57 185
185 631707060323 吴启立 68.33 71.00 186
186 631807060520 刘旭 65.78 71.00 187
187 631807060614 米广龙 63.57 56.00 188
188 631707060120 王斌 58.85 60.00 189
189 631807060110 冯钰程 67.87 78.00 190
190 631707060430 张君耀 65.50 63.00 191
191 631807060219 田小龙 66.79 76.00 192
192 631707060326 辛子轩 57.25 60.00 193
193 631807060120 彭思胜 65.31 65.00 194
194 631707060522 王荭 57.83 72.00 195
195 631807060134 周雄伟 63.35 55.00 196
196 631807060620 田原 61.96 60.00 197
197 631807060628 杨闰 60.77 60.00 198

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: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6
0 序号 学号 姓名 原专业 原班级 新专业 新班级
1 1 631807060113 金孝文 计算机类 计算机类1801班 物联网工程 物联网1801班
2 2 631807060131 张宸君 计算机类 计算机类1801班 物联网工程 物联网1801班
3 3 631807060129 杨耀宇 计算机类 计算机类1801班 物联网工程 物联网1801班
4 4 631807060117 刘文威 计算机类 计算机类1801班 物联网工程 物联网1801班
5 5 631807060112 何耀坤 计算机类 计算机类1801班 物联网工程 物联网1801班
6 6 631807060114 李德坤 计算机类 计算机类1801班 物联网工程 物联网1801班
7 7 631807060124 吴迪 计算机类 计算机类1801班 物联网工程 物联网1801班
8 8 631807060110 冯钰程 计算机类 计算机类1801班 物联网工程 物联网1801班
9 9 631807060120 彭思胜 计算机类 计算机类1801班 物联网工程 物联网1801班
10 10 631807060134 周雄伟 计算机类 计算机类1801班 物联网工程 物联网1801班
11 11 631805010228 袁金华 计算机类 计算机类1804班 物联网工程 物联网1801班
12 12 631807060409 蒋冬东 计算机类 计算机类1804班 物联网工程 物联网1801班
13 13 631807060403 陈高玉 计算机类 计算机类1804班 物联网工程 物联网1801班
14 14 631807060420 石玉松 计算机类 计算机类1804班 物联网工程 物联网1801班
15 15 631807060428 伍潘 计算机类 计算机类1804班 物联网工程 物联网1801班
16 16 631807060410 蒋明庆 计算机类 计算机类1804班 物联网工程 物联网1801班
17 17 631807060404 陈浩澜 计算机类 计算机类1804班 物联网工程 物联网1801班
18 18 631807060412 雷美龙 计算机类 计算机类1804班 物联网工程 物联网1801班
19 19 631807060405 陈金锐 计算机类 计算机类1804班 物联网工程 物联网1801班
20 20 631807060417 聂德名 计算机类 计算机类1804班 物联网工程 物联网1801班
21 21 631807060621 汪培豪 计算机类 计算机类1806班 物联网工程 物联网1801班
22 22 631807060615 彭才灿 计算机类 计算机类1806班 物联网工程 物联网1801班
23 23 631807060634 郑明镜 计算机类 计算机类1806班 物联网工程 物联网1801班
24 24 631807060630 张宝玉 计算机类 计算机类1806班 物联网工程 物联网1801班
25 25 631807060619 谭百鸣 计算机类 计算机类1806班 物联网工程 物联网1801班
26 26 631807060628 杨闰 计算机类 计算机类1806班 物联网工程 物联网1801班
27 27 631807060614 米广龙 计算机类 计算机类1806班 物联网工程 物联网1801班
28 28 631707060324 肖思睿 计算机类 计算机类1806班 物联网工程 物联网1801班
29 29 631807060635 左希伟 计算机类 计算机类1806班 物联网工程 物联网1801班
... ... ... ... ... ... ... ...
40 5 631807060201 曹淞 计算机类 计算机类1802班 物联网工程 物联网1802班
41 6 631807060223 王定文 计算机类 计算机类1802班 物联网工程 物联网1802班
42 7 631807060203 邓勇 计算机类 计算机类1802班 物联网工程 物联网1802班
43 8 631707060232 张鑫 计算机类 计算机类1802班 物联网工程 物联网1802班
44 9 631807060219 田小龙 计算机类 计算机类1802班 物联网工程 物联网1802班
45 10 631807060304 戴佳良 计算机类 计算机类1803班 物联网工程 物联网1802班
46 11 631807060306 高彪 计算机类 计算机类1803班 物联网工程 物联网1802班
47 12 631807060325 吴锟 计算机类 计算机类1803班 物联网工程 物联网1802班
48 13 631807060315 罗清文 计算机类 计算机类1803班 物联网工程 物联网1802班
49 14 631707060326 辛子轩 计算机类 计算机类1803班 物联网工程 物联网1802班
50 15 631807060318 谭浩 计算机类 计算机类1803班 物联网工程 物联网1802班
51 16 631707060329 殷梦萍 计算机类 计算机类1803班 物联网工程 物联网1802班
52 17 631607040319 喻刚桥 计算机类 计算机类1803班 物联网工程 物联网1802班
53 18 631707060323 吴启立 计算机类 计算机类1803班 物联网工程 物联网1802班
54 19 631807060517 李启欢 计算机类 计算机类1805班 物联网工程 物联网1802班
55 20 631807060524 宋亚东 计算机类 计算机类1805班 物联网工程 物联网1802班
56 21 631807060512 霍承叙 计算机类 计算机类1805班 物联网工程 物联网1802班
57 22 631807060507 范俊成 计算机类 计算机类1805班 物联网工程 物联网1802班
58 23 631807060505 杜远航 计算机类 计算机类1805班 物联网工程 物联网1802班
59 24 631807060515 况澳杰 计算机类 计算机类1805班 物联网工程 物联网1802班
60 25 631807060509 何瑞 计算机类 计算机类1805班 物联网工程 物联网1802班
61 26 631707060523 王渝熙 计算机类 计算机类1805班 物联网工程 物联网1802班
62 27 631707060506 何亮 计算机类 计算机类1805班 物联网工程 物联网1802班
63 28 631807060510 何渝 计算机类 计算机类1805班 物联网工程 物联网1802班
64 29 631707060214 罗英杰 计算机类 计算机类1805班 物联网工程 物联网1802班
65 30 631807060520 刘旭 计算机类 计算机类1805班 物联网工程 物联网1802班
66 31 631707060120 王斌 计算机类 计算机类1805班 物联网工程 物联网1802班
67 32 631707060416 潘茂林 计算机类 计算机类1805班 物联网工程 物联网1802班
68 33 631807060523 潘祥 计算机类 计算机类1805班 物联网工程 物联网1802班
69 34 631707060509 黄文杰 计算机类 计算机类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)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章