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()
#设置中文显示
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()
# #统计物联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()