matlab對一維數據進行K-means聚類離散化並顯示
目前,數據挖掘技術十分熱門,數據挖掘中有一種關聯規則挖掘方法,在關聯規則挖掘前需要將採集的連續數據離散化才行。其中,K-means算法能夠對連續數據進行聚類離散化。目前許多資料都是介紹的是對二維或多維數據進行聚類離散化,對一維數據進行K-means聚類離散化的方法基本沒有介紹。下面分享給大家“matlab對一維數據進行K-means聚類離散化並顯示”方法和程序,幫助大家更好地處理一維數據(一列數據)的聚類離散化。
操作方法
(01)首先,使用clc和clear命令清空matlab的命令視窗和工作區,然後使用xlsread函數將一維數據樣本Excel表格中的數據讀入到yw_data矩陣。注意表格後綴“”,因爲有些表格的後綴爲“xls”,程序xlsread中語句的後綴也需要與表格後綴相同。同時將yw_data數值矩陣賦值給xx數值矩陣,後面對xx數值矩陣進行操作,不動原始數據樣本矩陣yw_data。程序如下:clc;clear;yw_data=xlsread('一維數據樣本'); %讀入一維數據樣本到yw_data矩陣xx=yw_data;執行後檢查一維數據樣本中的數據是否讀入到了yw_data數值矩陣中,下面是正常讀入的結果。
(02)數據讀進來後,使用MATLAB自帶的K-means聚類算法函數對一維數據進行分類。程序如下:clus=4;[idx,c]=kmeans(xx,clus);說明:clus=4是將數據分成4類;xx是剛剛讀入的一維數據樣本;idx是N*1矩陣,存儲一維數據樣本中每個數據的聚類標號;c存儲的是各個聚類質心的位置執行程序後的結果如下圖所示。
(03)聚類後,初始化四個空矩陣cc1、cc2、cc3和cc4,用於存儲聚類後的四組數據。初始化空矩陣直接給矩陣賦值[ ]即可,程序如下:cc1=[];cc2=[];cc3=[];cc4=[];[n,m]=size(xx);其中[n,m]=size(xx)是計算一維數據樣本的大小,用於後續索引。由於是一維的,所以計算後結果m應等於1,n爲一維數據樣本的行數。計算結果如下圖所示。
(04)初始化空矩陣cc1、cc2、cc3和cc4後就可以將聚類後的四類數據存儲到相應矩陣中了,用於後續顯示和按類分析。程序如下:for i=1:nif idx(i)==1cc1=[cc1;xx(i)];elseif idx(i)==2cc2=[cc2;xx(i)];elseif idx(i)==3cc3=[cc3;xx(i)];elseif idx(i)==4cc4=[cc4;xx(i)];endend說明:使用條件結構索引每個數據的聚類標號idx將一維數據樣本中數據進行投框式存儲。分類存儲執行後的結果如下圖所示。
(05)當然,可以顯示分類後的邊界值和聚類中心,以便於觀察分類各類界限和分佈中心。程序如下:disp('第一類邊界')[min(cc1),max(cc1)]disp('第二類邊界')[min(cc2),max(cc2)]disp('第三類邊界')[min(cc3),max(cc3)]disp('第四類邊界')[min(cc4),max(cc4)]disp('四類中心')c說明:求邊界下限使用min()函數,求邊界上限使用max()函數,聚類中心直接存儲在c矩陣中,c後面不寫;號就可顯示。執行結果如下。第一類邊界ans =82.0200 99.2280 第二類邊界 ans = 114.3840 128.5710第三類邊界ans =99.2530 143.0310第四類邊界ans =128.5930 144.3360四類中心c = 90.5653 120.8449 107.9135 136.3006
(06)當然,光使用數值和矩陣表格顯示計算結果還是不怎麼直觀的,直觀顯示聚類離散化結果最好的方法就是數據可視化了,即作圖顯示。作圖顯示聚類結果程序如下:h1=plot(xx,'w');grid on;hold on;for i=1:nif idx(i)==1text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);elseif idx(i)==2text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);elseif idx(i)==3text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);elseif idx(i)==4text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);endendylabel('一維樣本數據值')xlabel('樣本序列')說明:透過條件結構索引聚類標號在圖上數據所在位置採用不同的顏色使用 text顯示聚類標號,i,xx(i)是數據所在位置,num2str(idx(i))是將聚類標號轉換爲字元串才能在圖中顯示,'color',[* * *]是顯示聚類標號的顏色,不同數字組合顏色不同,ylabel是在y軸標籤,xlabel是x軸標籤。執行後的結果如下圖所示。
(07)“matlab對一維數據進行K-means聚類離散化並顯示”完整程序如下:%**************matlab對一維數據進行K-means聚類離散化並顯示***********clc;clear;yw_data=xlsread('一維數據樣本'); %讀入一維數據樣本到yw_data矩陣xx=yw_data;clus=4;[idx,c]=kmeans(xx,clus);cc1=[];cc2=[];cc3=[];cc4=[];[n,m]=size(xx);for i=1:nif idx(i)==1cc1=[cc1;xx(i)];elseif idx(i)==2cc2=[cc2;xx(i)];elseif idx(i)==3cc3=[cc3;xx(i)];elseif idx(i)==4cc4=[cc4;xx(i)];endenddisp('第一類邊界')[min(cc1),max(cc1)]disp('第二類邊界')[min(cc2),max(cc2)]disp('第三類邊界')[min(cc3),max(cc3)]disp('第四類邊界')[min(cc4),max(cc4)]disp('四類中心')ch1=plot(xx,'w');grid on;hold on;for i=1:nif idx(i)==1text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);elseif idx(i)==2text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);elseif idx(i)==3text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);elseif idx(i)==4text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);endendylabel('一維樣本數據值')xlabel('樣本序列')
特別提示
對於多維數據聚類同樣可以使用上面的程序。
注意表格後綴“”,因爲有些表格的後綴爲“xls”,程序xlsread中語句的後綴也需要與表格後綴相同。
-
怎麼在Excel列A數據中篩選出列B數據?
已知excel列A數據和列B數據有部分內容相同,怎樣才能篩選出哪些混在列A中的列B數據呢?最笨的方法就是複製列B的數據查找。這裏,我給大家分享一種方法,既準確又快捷的方法。不信,您嘗試一下。操作方法(01)開啟需要編輯的Excel檔案,觀察列A和列B,列A列B有部分內容重複,現需...
-
顯卡位寬有哪些,有什麼區別
爲了更好的相容,更好的DIY,我們需要了解一下顯卡的位寬有哪些,有什麼區別。操作方法(01)顯卡位寬,主流有128bit還有64bit、128bit、256bit,顯存的位寬越高,顯卡的性能也就越好。(02)主流顯卡採用128bit位寬,128位的顯存能夠適應大多數遊戲。(03)顯存的帶寬=顯存頻率*顯存位...
-
如何用ppt繪製直尺刻度
老師們在教學到認識刻度時會經常用到畫刻度,尤其是出個練習題,畫個刻度非常頭疼,畫不標準或者不規範,今天我來告訴老師們一個非常簡單的繪製方法,一學就會。操作方法(01)先畫一條水平的直線(大約10多釐米),和一條豎直線段(0.2-0.3釐米)。(02)將豎直的線段複製並粘貼幾個(需要...
-
筆記本電腦win10如何快速取消“鎖屏密碼”?
日常工作生活中,除了工作和公衆場所,私人以及家裏電腦沒有必要設定鎖屏密碼,每次登入輸入一連串密碼顯得多餘,已經設定的可以取消。下面介紹一下“筆記本電腦win10如何快速取消“鎖屏密碼”?”操作方法(01)右鍵點擊桌面左下角“開始”——“執行”,開啟“執行”對話框...