2015-04-24 25 views
-3

我用GLCM技術,有來自馬莫圖像提取物,然後我用樸素貝葉斯分類進行分類,我們可以用matlab中的NaN取代什麼值?

爲什麼輸出列包括喃?

當我們有1個輸出矩陣從樸素貝葉斯分類(1列包括0,1,NaN)時,我們可以取代NaN有什麼價值?

代碼:

Train_Test(); 

nb = NaiveBayes.fit(Ytrain, Traininglabel); 

y = nb.predict(Ytest); 

confusionmat(Testinglabel,y); 

輸出:

y= 
[NaN 
NaN 
NaN 
0 
0 
0 
NaN 
0 
0 
0 
0 
0 
0 
1 
0] 
+2

通常出現了一些在你的代碼錯誤的地方,當你得到NaN值!你應該首先調查他們是如何到達那裏的,如果你能解決問題的話。 – Cat

+1

發佈您的訓練數據/標籤的值或檢查他們是否有NaN – krisdestruction

回答

1

當你的訓練數據的觀測包含NaN值,默認情況下NaiveBayes.predict不會把他們歸類到任何類,返回NaN的作爲預測值。

通過對predict使用HandleMissing選項,可以更改此行爲。默認情況下,它被設置爲off,但是如果您將其設置爲on它預測只使用非NaN值的變量,並且不應該返回NaN作爲預測(除非所有變量都是NaN)。

嘗試

y = nb.predict(Ytest, 'HandleMissing', 'on'); 
相關問題