謝謝你檢查這個問題了。 我想了解如何使用多元高斯分類器。多元高斯分類器實現。麻煩理解,從天真高斯
爲了更好地向您介紹我的問題,我將介紹當前如何對數據進行分類。
我有這些對象的庫:
public class AccFeat {
int id;
Double[] mean = new Double[3];
Double[] sd = new Double[3];
Double[] avPeakDistance = new Double[3];
int[][] histogram = new int[3][10];
int[][] fftHistogram = new int[3][10];
int[] crossingCount = new int[3];
double resultantAcc;
int type;
然後我得到一個對象,具有類型領域表明它不被識別。
步驟:
負載的每類30個的訓練樣本的庫。
計算每個樣本類的每個特徵的均值和方差,將這些值存儲在數組中,每個類有73個平均值/方差對。 (因爲總共有73個特徵,包括6個直方圖每個10個分檔(60個數字))
創建一個73值的數組,對應於要識別的AccFeat對象的特徵。
使用我所瞭解的計算概率是樸素貝葉斯分類器。
我們檢查我是從0到8,因爲有9個樣本類。
for (int i = 0; i < 9; i++) {
result = 1;
for (int j = 0; j < SAMPLEFEATURES.get(i).size(); j++) {
result = result * p(QUERYFEATURES.get(j), SAMPLEFEATURES.get(i).get(j));
//this is the p function, first argument is value of feature,
//second argument is mean-variance pair for this feature in this particular i class.
}
results[i] = result;
}
}
P(x)的功能很簡單:
然後,我有9個概率值,爲每個類,我的分類會說,這是類對應於最高的概率值。
現在我想創建一個多元高斯分類器。
這是用於在這種情況下,計算概率公式:
所以我創建的每個9類的方差 - 協方差矩陣。在這裏我不知道如果我這樣做是正確的,我採取所有73種功能,這又包括每10個箱6個直方圖,所以這些功能60加速頻率的直方圖和加速度值
這個我覺得有點狡猾,我應該把所有這些值放在一個矩陣中嗎?計算x軸範圍10-20的加速度頻率與y加速度的峯值距離之間的協方差似乎有點奇怪。
但是我做,爲每個類創建使用此公式對於每個小區一個73x73矩陣:((featureA [I]
冠狀病毒(設有一個,特徵B)=總和 - mean_featureA)*(featureB [Ⅰ] - mean_featureB))/ N-1
我需要接下來的事情是一個平均矢量,所以我創建的每個特徵的裝置,用於與每個類相關聯的每個組smaples的73元素矢量,共有9個向量。
從我明白,在我的程序的情況下,式中的x是未識別AccFeat對象的特徵值的73元素向量。
所以我實現了這個公式,心想:我一直在使用的協方差矩陣來運行它,意味着每個類,並具有最高的結果是最有可能的候選者鑑定中
問題:
協方差矩陣是滿負值,只有約5%的人是積極的,當他們他們通常是非常大的。
行列式該矩陣的是在一些情況下非常接近0,或負的,這打破了式。
我使用分類器的方式有什麼問題?不幸的是,我沒有人幫助我, 與此,我的基礎上,我所有的在線講座幻燈片的弱點理解....
任何人都可以幫助我如何使用它?
我已經和我的主管討論過這個問題了,是的,他提出了和你一樣的問題。我試圖實現MVN,因爲這是他的建議,我也會看看SVN。我絕對沒有ML的背景,只有高中的統計數據,所以這對我來說非常具有挑戰性。 – LucasSeveryn