




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)轉(zhuǎn)換PCA降維K-均值模型訓(xùn)練聚類評價不失真壓縮圖像參考書目《機器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動式教程》基于K-均值的聚類模塊8機器學(xué)習(xí)技術(shù)目錄NBA球員分類地區(qū)消費分類圖像矢量量化小結(jié)習(xí)題八基于K-均值的聚類任務(wù)模塊8機器學(xué)習(xí)技術(shù)從找到NBA球員在過去一個賽季的統(tǒng)計數(shù)據(jù)。有286位球員球場上的各方面表現(xiàn),使用K-均值算法劃分球員到簇,并定義簇的具體分類。詳細的字段描述見下表。1.1任務(wù)描述1.NBA球員分類1.1任務(wù)描述要求使用K-均值算法聚類players.csv中的286名球員,分析簇代表的球員特點。任務(wù)目標字段類型允許為空標簽?例子排名int否是1球員str否否詹姆斯-哈登球隊str否否火箭得分float否否31.9命中-出手str否否9.60-21命中率float否否0.45399999999999996命中-三分str否否4.20-10.70三分命中率float否否0.397命中-罰球str否否8.50-9.90罰球命中率float否否0.861場次int否否30上場時間float否否36.11.NBA球員分類1.2
任務(wù)分解import方式引入依賴的模塊文件讀入DataFrame,檢測空值和數(shù)據(jù)分布特征歸一化到(0,1)區(qū)間依賴庫導(dǎo)入數(shù)據(jù)觀察數(shù)據(jù)轉(zhuǎn)換從探查數(shù)據(jù)內(nèi)容開始,通過數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換加工原始數(shù)據(jù),使用輪廓系數(shù)評價聚類性能,找到K-均值算法的最優(yōu)K值。1.NBA球員分類1.2
任務(wù)分解輪廓系數(shù)評價K-均值模型性能,找到最優(yōu)K值最優(yōu)K值訓(xùn)練的模型劃分球員,可視化數(shù)據(jù)分布觀察不同簇樣本的數(shù)據(jù)分布,指定簇到具體的分類參數(shù)查找聚類可視化簇分析接上1.NBA球員分類1.3
任務(wù)實施1.3.1依賴庫導(dǎo)入步驟1:定義2級標題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟2:導(dǎo)入依賴庫。importpandasaspdimportseabornassbnimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportminmax_scalefromsklearn.clusterimportKMeansfromsklearn.metricsimportsilhouette_scoreimportnumpyasnp按“SHIFT+Enter”,檢查輸出無異常。1.NBA球員分類1.3
任務(wù)實施1.3.2數(shù)據(jù)觀察文件讀入DataFrame對象后,需要觀察字段內(nèi)容和空值。步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)觀察</font>按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟2:檢查前5個樣本。players=pd.read_csv("../data/players.csv")players.head()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟3:查看特征是否包含空值。players.isnull().sum()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟4:設(shè)置Matplotlib正常顯示中文字符和負號。plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=False步驟5:可視化數(shù)據(jù)分布。sbn.lmplot(x="得分",y="命中率",data=players,fit_reg=False,scatter_kws={"alpha":0.8,"color":"steelblue"})1.NBA球員分類1.3
任務(wù)實施按“SHIFT+Enter”,運行結(jié)果如下:從圖中看出,左下樣本分布比較集中,可以歸為一類;左上樣本密度低,歸為一類;右邊樣本密度也不高,歸為1類。因此K-均值算法的K值設(shè)為3。1.NBA球員分類K-均值K-均值算法流程K-均值算法的基本思想是:以空間中K個點為中心進行聚類,對最靠近他們的對象歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結(jié)果,大概就是這個意思,“物以類聚、人以群分”。具體流程如下:步驟1:從N個樣本數(shù)據(jù)中隨機選取K個對象,作為初始的聚類中心;步驟2:分別計算每個樣本點到各個聚類中心的距離,并逐個分配到距離其最近的簇中;步驟3:所有對象分配完成后,更新K個聚類中心位置,聚類中心定義為簇內(nèi)所有對象在各個維度的均值;步驟4:與前一次計算得到的K個聚類中心比較,如果聚類中心發(fā)生變化,轉(zhuǎn)至步驟2,否則轉(zhuǎn)至步驟5;步驟5:當類中心不再發(fā)生變化,停止執(zhí)行。下圖演示了2輪K-均值算法的迭代過程,最終聚類趨于穩(wěn)定。K-均值Sklearn庫的KMeans類提供了K-均值算法接口,定義如下:classsklearn.cluster.KMeans(n_clusters=8,init='k-means++',**kargs)參數(shù)n_clusters:int,默認值8聚類數(shù)。init:{‘k-means++’,‘random’},默認值=‘k-means++’初始化方法。通常n_clusters需要可視化方法分析聚類結(jié)果,評價后選擇最佳值。K-均值1.3
任務(wù)實施1.3.3數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運行結(jié)果如下:步驟2:轉(zhuǎn)換“得分”、“罰球命中率”、“命中率”、“三分命中率”字段到[0,1]區(qū)間。對于數(shù)據(jù)矩陣X,歸一化公式如下:
1.NBA球員分類1.3
任務(wù)實施X_scaled=minmax_scale(players[['得分','罰球命中率','命中率','三分命中率']])X_scaled按“SHIFT+Enter”,運行結(jié)果如下:從結(jié)果可以看出,這4個字段值變換到[0,1]區(qū)間。1.NBA球員分類1.3
任務(wù)實施1.3.4參數(shù)查找步驟1:定義2級標題。##<fontcolor="black">參數(shù)查找</font>按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟2:初始化不同n_clusters參數(shù)值的K-均值模型,用輪廓系數(shù)評價模型性能,找到最優(yōu)參數(shù)。n_clusters對應(yīng)K-均值算法的K。S=[]#存儲不同簇的輪廓系數(shù)K=range(2,11)forkinrange(2,11): kmeans=KMeans(n_init="auto",init="k-means++",n_clusters=k,random_state=0) kmeans.fit(X_scaled)1.NBA球員分類1.3
任務(wù)實施 labels=kmeans.labels_ #計算輪廓系數(shù) sil_score=silhouette_score(X_scaled,labels,metric='euclidean') S.append(sil_score)接上KMenas為什么設(shè)置init=”k-means++”?K-Means++是為K-均值算法選擇初始值(或“種子”)的算法,避免標準K-均值算法有時發(fā)現(xiàn)的較弱聚類。KMeans設(shè)置init=”k-means++”將在初始化時啟用K-Means++算法選擇有利于聚類的聚類中心。1.NBA球員分類輪廓系數(shù)輪廓系數(shù)(Silhouette)是一個衡量一個樣本與它所屬聚類相較于其它聚類的相似程度。取值范圍-1到1,值越大表明這個結(jié)點更匹配其屬聚類而不與相鄰的聚類匹配。如果大多數(shù)樣本都有很高的輪廓系數(shù)值,那么聚類適當。若許多點都有低或者負的值,說明K過大或過小。在Sklearn庫中,silhouette_score函數(shù)輸入數(shù)據(jù)集和分類,輸出所有樣本的平均輪廓系數(shù)。sklearn.metrics.silhouette_score(X,labels,**kwds)參數(shù)X:array樣本之間的成對距離數(shù)組或特征數(shù)組。labels:array每個樣本的預(yù)測標簽。1.3
任務(wù)實施步驟3:可視化K值對聚類的性能影響。#設(shè)置繪圖風(fēng)格plt.style.use('ggplot')#繪制K的個數(shù)與輪廓系數(shù)的關(guān)系plt.plot(K,S,'b*-')plt.xlabel('簇的個數(shù)')plt.ylabel('輪廓系數(shù)')1.NBA球員分類1.3
任務(wù)實施按“SHIFT+Enter”,運行結(jié)果如下:表明K=3聚類效果最好。1.NBA球員分類1.3
任務(wù)實施1.3.5聚類可視化步驟1:定義2級標題。##<fontcolor="black">聚類可視化</font>按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟2:將球員數(shù)據(jù)集分成3類。kmeans=KMeans(n_init="auto",init="k-means++",n_clusters=3,random_state=0)kmeans.fit(X_scaled)按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟3:找到聚類中心。#將聚類結(jié)果標簽插入到數(shù)據(jù)集players中players['cluster']=kmeans.labels_centers=[]#存儲簇中心foriinplayers.cluster.unique(): centers.append(players.loc[players.cluster==i,['得分','罰球命中率','命中率','三分命中率']].mean()) #將列表轉(zhuǎn)換為數(shù)組,便于后面的索引取數(shù) centers=np.array(centers)1.NBA球員分類1.3
任務(wù)實施步驟4:可視化聚類結(jié)果。#繪制散點圖sbn.lmplot(x='得分',y='命中率',hue='cluster',data=players,markers=['^','s','o'],fit_reg=False,scatter_kws={'alpha':0.8},legend=False)#添加簇中心plt.scatter(centers[:,0],centers[:,2],c='k',marker='*',s=180)plt.xlabel('得分')plt.ylabel('命中率')1.NBA球員分類1.3
任務(wù)實施按“SHIFT+Enter”,運行結(jié)果如下:從聚類結(jié)果可以看出,聚類中心點位于簇的中心位置。1.NBA球員分類1.3
任務(wù)實施1.3.6簇分析步驟1:定義2級標題。##<fontcolor="black">簇分析</font>按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟2:統(tǒng)計各簇中的樣本數(shù)。pd.Series(kmeans.labels_).value_counts()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟3:第1類球員得分低但命中率高,推測為上場及進攻次數(shù)較少的新秀。res0Series=pd.Series(kmeans.labels_)res0=res0Series[res0Series.values==0]players.iloc[res0.index].head()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟4:第2類球員得分低且命中率也不高,推測為得分能力不強的組織型球員。res0Series=pd.Series(kmeans.labels_)res0=res0Series[res0Series.values==1]players.iloc[res0.index].head()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類1.3
任務(wù)實施步驟5:第3類球員得分高、命中率高,推測為球隊的進攻核心。res0Series=pd.Series(kmeans.labels_)res0=res0Series[res0Series.values==2]players.iloc[res0.index].head()按“SHIFT+Enter”,運行結(jié)果如下:1.NBA球員分類知識點K-均值算法優(yōu)缺點優(yōu)點1)算法思想簡單,收斂速度快;2)主要需要調(diào)參的參數(shù)僅僅是K;3)算法的可解釋度比較強。缺點1)采用迭代方法,聚類結(jié)果往往收斂于局部最優(yōu)而得不到全局最優(yōu)解;2)對非凸形狀的類簇識別效果差;3)易受噪聲、邊緣點、孤立點影響;4)可處理的數(shù)據(jù)類型有限,對于高維數(shù)據(jù)對象的聚類效果不佳。根據(jù)國家統(tǒng)計局發(fā)布的2019年全國31個?。ㄊ?、自治區(qū))居民人均消費支出數(shù)據(jù),涵蓋食品煙酒、衣著、居住、生活用品及服務(wù)、交通通信、教育文化娛樂、醫(yī)療保健等方面,使用K-均值算法劃分地區(qū)到簇,分析每個簇的具體含義。詳細的字段描述見下表。2.1任務(wù)描述2.地區(qū)消費分類2.1任務(wù)描述根據(jù)各地區(qū)的消費數(shù)據(jù),使用K-均值算法聚類31個省市,分析簇代表的地區(qū)特點。任務(wù)目標2.地區(qū)消費分類字段類型允許為空標簽?例子地區(qū)str否是北京消費支出(元)float否否43038.3食品煙酒(元)float否否8488.5衣著(元)float否否8488.5居?。ㄔゝloat否否8488.5生活用品及服務(wù)float否否8488.5交通通信(元)float否否8488.5教育文化娛樂(元)float否否8488.5醫(yī)療保健(元)float否否8488.5其他(元)float否否8488.52.2
任務(wù)分解import方式引入依賴的模塊文件讀入DataFrame對象,觀察特征值刪除與聚類無關(guān)的字段“地區(qū)”依賴庫導(dǎo)入數(shù)據(jù)觀察數(shù)據(jù)清洗從探查數(shù)據(jù)內(nèi)容開始,通過數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換加工原始數(shù)據(jù),使用輪廓系數(shù)評價聚類性能,找到K-均值算法的最優(yōu)K值。2.地區(qū)消費分類2.2
任務(wù)分解特征歸一化到(0,1)區(qū)間訓(xùn)練和選擇降維前后的K-均值模型,分析簇代表的地區(qū)用圖表展示樣本分布和所屬的簇,分析聚類結(jié)果數(shù)據(jù)轉(zhuǎn)換聚類可視化分析接上2.地區(qū)消費分類2.3
任務(wù)實施2.3.1依賴庫導(dǎo)入步驟1:定義2級標題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportminmax_scale,StandardScalerfromsklearn.decompositionimportPCAfromsklearn.clusterimportKMeans,DBSCANfromsklearn.metricsimportsilhouette_scoreimportnumpyasnp2.地區(qū)消費分類2.3
任務(wù)實施2.3.2數(shù)據(jù)觀察文件讀入DataFrame對象后,觀察字段內(nèi)容。步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)觀察</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:檢查前5個樣本。rawdata_df=pd.read_csv("../data/2019各省居民平均消費支出.csv")rawdata_df.head()2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:2.3
任務(wù)實施2.3.3數(shù)據(jù)清洗步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)清洗</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:刪除與聚類無關(guān)的字段“地區(qū)”。X=rawdata_df.drop(["地區(qū)"],axis=1)X.head()2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:2.3
任務(wù)實施2.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:轉(zhuǎn)換字段值到[0,1]區(qū)間。X_scaled=minmax_scale(X)X_scaled[0:5,:]2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:從結(jié)果可以看出,現(xiàn)在所有字段的值位于[0,1]區(qū)間。2.3
任務(wù)實施2.3.5聚類步驟1:定義2級標題。##<fontcolor="black">聚類</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:用數(shù)據(jù)集的所有字段訓(xùn)練K-均值模型,評價聚類的平均輪廓系數(shù)。kmeans=KMeans(n_init="auto",init="k-means++",n_clusters=3,random_state=0)kmeans.fit(X_scaled)labels=kmeans.labels_silhouette_score(X_scaled,labels,metric='euclidean')2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:2.3
任務(wù)實施步驟3:降低數(shù)據(jù)維度到2。pca=PCA(n_components=2,random_state=51592)X_decomposed=pca.fit_transform(X_scaled)2.地區(qū)消費分類步驟4:數(shù)據(jù)降維后再次測試K-Means聚類模型的性能。kmeans=KMeans(n_init="auto",init="k-means++",n_clusters=3,random_state=0)kmeans.fit(X_decomposed)2.3
任務(wù)實施labels=kmeans.labels_silhouette_score(X_decomposed,labels,metric='euclidean')接上2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:比較降維前后2次聚類模型的輪廓系數(shù),可以發(fā)現(xiàn)降維后的聚類模型效果更好,因此下面就使用降維后的聚類模型。2.3
任務(wù)實施步驟5:數(shù)據(jù)集添加聚類標簽。rawdata_df["類"]=labelsrawdata_df.sort_values(by="類",axis=0)#相同標簽樣本放在一起2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:2.3
任務(wù)實施2.地區(qū)消費分類從上面結(jié)果看出,按照平均消費支出全國地區(qū)分為3類:(1).特大型城市:北京、上海。(2).經(jīng)濟發(fā)達省市:廣東、浙江、江蘇、天津。(3).發(fā)展中省市:河南、青海、甘肅等。2.3
任務(wù)實施2.3.6可視化分析步驟1:定義2級標題。##<fontcolor="black">可視化分析</font>按“SHIFT+Enter”,運行結(jié)果如下:2.地區(qū)消費分類2.3
任務(wù)實施步驟2:獲取各類樣本的索引。class0_idx=rawdata_df[rawdata_df["類"]==0].index.valuesclass1_idx=rawdata_df[rawdata_df["類"]==1].index.valuesclass2_idx=rawdata_df[rawdata_df["類"]==2].index.values2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:2.3
任務(wù)實施2.地區(qū)消費分類步驟3:設(shè)置Matplotlib正常顯示中文字符和負號。mpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False步驟4:可視化聚類結(jié)果。plt.scatter(X_decomposed[class0_idx,0],X_decomposed[class0_idx,1],marker='.',color='c',s=50,label="發(fā)展中省市")plt.scatter(X_decomposed[class1_idx,0],X_decomposed[class1_idx,1],marker='o',color='g',s=50,label='特大省市')2.3
任務(wù)實施plt.scatter(X_decomposed[class2_idx,0],X_decomposed[class2_idx,1],marker='v',color='r',s=50,label='經(jīng)濟發(fā)達省市')接上2.地區(qū)消費分類按“SHIFT+Enter”,運行結(jié)果如下:從聚類結(jié)果可以看出,3種樣本分別散布在不同區(qū)域。圖像有N個像素點,含有M種顏色。使用K-Means算法把N個像素點聚成K類,找出K個中心點。使用每個像素點所在的簇的中心點來覆蓋原有的顏色值。這樣,N個像素點帶有的M種顏色取值,就被壓縮了到K種顏色值。3.1任務(wù)描述3.圖像矢量量化給定一張彩色圖片,使用K-均值算法聚類像素點,像素點的顏色值用所屬簇的中心點值代替,比較分析壓縮后的圖片大小。任務(wù)目標3.2
任務(wù)分解import方式引入依賴的模塊圖片讀入Numpy對象,觀察像素類型、數(shù)據(jù)維度、取值范圍、顏色數(shù)等屬性像素值歸一化到(0,1)區(qū)間,數(shù)據(jù)轉(zhuǎn)換到2維空間依賴庫導(dǎo)入數(shù)據(jù)觀察數(shù)據(jù)轉(zhuǎn)換從探查數(shù)據(jù)內(nèi)容開始,通過數(shù)據(jù)轉(zhuǎn)換加工原始數(shù)據(jù),訓(xùn)練K-均值模型,用聚類中心值代替像素點的顏色值,可視化分析矢量量化結(jié)果。3.圖像矢量量化3.2
任務(wù)分解K-均值算法在像素點組成的數(shù)據(jù)集上訓(xùn)練聚類模型像素點的顏色值用所屬聚類的中心點值代替比較替換前后圖片的視覺效果和文件大小模型訓(xùn)練像素值替換可視化分析接上3.圖像矢量量化3.3
任務(wù)實施3.3.1依賴庫導(dǎo)入步驟1:定義2級標題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearn.clusterimportKMeansimportnumpyasnpfromsklearn.utilsimportshufflefromos.pathimportgetsize3.圖像矢量量化3.3
任務(wù)實施3.3.2數(shù)據(jù)觀察步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)觀察</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:圖片讀入Numpy對象,查看像素值類型、圖片大小、像素值范圍、顏色數(shù)等圖片特征。china=plt.imread('../data/china.jpg')print('像素值類型:',china.dtype)print('圖片大小:',china.shape)print('顏色最小值:{},顏色最大值:{}'.format(china.min(),china.max()))newimage=china.reshape((-1,3))print("圖片顏色數(shù):",pd.DataFrame(newimage).drop_duplicates().shape)3.圖像矢量量化3.3
任務(wù)實施3.圖像矢量量化按“SHIFT+Enter”,運行結(jié)果如下:步驟3:圖片保存到壓縮文件。np.savez_compressed("china.npz",pic=china)按“SHIFT+Enter”,在當前目錄看到壓縮文件“china.npz”。3.3
任務(wù)實施3.3.3數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:轉(zhuǎn)換像素值到[0,1]區(qū)間。china=np.array(china,dtype=np.float64)/china.max()3.圖像矢量量化步驟3:3維矩陣轉(zhuǎn)換到2維空間。w,h,d=china.shapeimage_array=np.reshape(china,(-1,d))按“SHIFT+Enter”,檢查輸出無異常。按“SHIFT+Enter”,檢查輸出無異常。3.3
任務(wù)實施3.3.4模型訓(xùn)練步驟1:定義2級標題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:使用K-Means算法在像素點上訓(xùn)練聚類模型。kmean_model=KMeans(n_clusters=64,n_init="auto",random_state=0)kmeans=kmean_model.fit(image_array)3.圖像矢量量化按“SHIFT+Enter”,檢查輸出無異常。3.3
任務(wù)實施3.3.5像素值替換步驟1:定義2級標題。##<fontcolor="black">像素值替換</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:K-Means模型預(yù)測每個像素點隸屬的聚類。labels=kmeans.predict(image_array)3.圖像矢量量化步驟3:像素點的顏色值用聚類中心值代替。image_kmeans=np.zeros((w*h,d))foriinrange(w*h):
image_kmeans[i]=kmeans.cluster_centers_[labels[i]]"K-Means矢量圖顏色數(shù):{}".format(pd.DataFrame(image_kmeans).drop_duplicates().shape)3.3
任務(wù)實施從結(jié)果可以看出,經(jīng)過像素值替換的K-Means矢量圖只有64種顏色。3.圖像矢量量化按“SHIFT+Enter”,運行結(jié)果如下:3.3
任務(wù)實施3.3.6可視化分析步驟1:定義2級標題。##<fontcolor="black">可視化分析</font>按“SHIFT+Enter”,運行結(jié)果如下:3.圖像矢量量化3.3
任務(wù)實施步驟2:恢復(fù)矢量圖到3維空間。image_kmeans=image_kmeans.reshape(w,h,d)*china.max()3.圖像矢量量化步驟3:保存矢量圖到壓縮文件。np.savez_compressed("china_kmeans.npz",pic=image_kmeans)print("原圖壓縮文件大小:{}".format(getsize("china.npz")))print("矢量圖壓縮文件大小:{}".format(getsiz
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 樹根修剪施工方案
- 主播延期合同范例
- 公路開挖合同范例
- 農(nóng)民種地合同范例
- 業(yè)委會秘書勞務(wù)合同范例
- 農(nóng)村舞臺搭建合同范例
- 功能化聚苯硫醚超疏水抗菌材料的制備及性能研究
- 初創(chuàng)公司口頭承諾合同范例
- 農(nóng)村修建橋梁合同范本
- 買賣合同范例 日語
- 石灰石粉作為土壤調(diào)理劑的效果及安全性評估
- 保護患者隱私課件
- 空中交通管制無線電陸空通話常用標準通話用語
- 生產(chǎn)工藝的標準化與規(guī)范化
- 中醫(yī)養(yǎng)生與身心健康課件
- 1、現(xiàn)代生物技術(shù)的概念、涵蓋的領(lǐng)域
- 河道清淤培訓(xùn)課件
- 機械基礎(chǔ)全冊教案第四版
- 30題紀檢監(jiān)察位崗位常見面試問題含HR問題考察點及參考回答
- 重癥肺炎護理查房課件文件
- 《瘋狂動物城》全本臺詞中英文對照
評論
0/150
提交評論