2014-10-09 55 views
-2

我從mvnrnd生成多數據。我可以使用K-means將這些數據聚類爲2組。我也想知道K-means的準確性,但我不知道如何計算。我怎麼知道k-均值聚類的正確性與結果進行比較並獲得準確性?!K-means和SVM的多數據

我有一個多數據和類,我知道我可以做SVM。然而,SVM的準確度太低,約72%至83%。我可能犯了一些錯誤。我想聽聽一些反饋。謝謝

n=1;mu1=[0,0,0];mu2=[1,1,1]; mu3=[2,2,2]; mu4=[3,3,3]; m=0.9;s=[1 m m ;m 1 m ; m m 1]; 
data1 = mvnrnd(mu1,s,1000); data2 = mvnrnd(mu2,s,1000);data3 = mvnrnd(mu3,s,1000);data4 = mvnrnd(mu4,s,1000); 
all_data = [data1;data2;data3;data4]; 
[idx,ctrs,sumD,D] = kmeans(all_data,2,'distance','sqE','start','sample'); 
model = svmtrain(idx,all_data); 
mu7=[0,0,0];mu8=[1,1,1];mu9=[2,2,2];mu10=[3,3,3]; 
data7=mvnrnd(mu7,s,1000);data8=mvnrnd(mu8,s,1000);data9=mvnrnd(mu9,s,1000);data10=mvnrnd(mu10,s,1000); 
test_data = [data7;data8;data9;data10]; value = svmpredict(idx,test_data,model);        

我想知道我的錯誤或我的代碼錯誤的地方。我不知道爲什麼我的準確性太低。我真的想改進我的代碼。謝謝 !!

+0

您不準確的最可能原因是最初的聚類中心。當它們應該屬於另一個羣集時,您可能擁有屬於其他羣集成員的點。嘗試運行'kmeans'多次,然後在將其分類到SVM之前找到平均分類。 – rayryeng 2014-10-09 03:11:33

回答

0

要計算k-means算法的準確性您應該具有先驗知識,即參考類向量,就像您在SVM中具有的一樣。 儘管k-means是無監督學習算法,並且您不需要有類向量來分類數據,但您需要它來計算準確性。 我也懷疑你計算SVM模型的方法。你使用由k-means算法計算出的指標具有其自己的準確性(現在它不知道)。你使用模型化的數據進行分類,那麼爲什麼不用類創建你的矢量?