基於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)]

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