分類條件機率

package NaviveBayesClassify;.net


/**事件

* <b>類</b>條件機率計算get

*it

* <h3>類條件機率</h3>io

* P(x<sub>j</sub>|c<sub>j</sub>)=( N(X=x<sub>i</sub>, C=c<sub>jclass

* </sub>)+1 ) <b>/</b> ( N(C=c<sub>j</sub>)+M+V ) <br>float

* 其中,N(X=x<sub>i</sub>, C=c<sub>j</sub>)表示類別c<sub>j</sub>中包含屬性x<sub>static

* i</sub>的訓練文本數量;N(C=c<sub>j</sub>)表示類別c<sub>j</sub>中的訓練文本數量;M值用於避免di

* N(X=x<sub>i</sub>, C=c<sub>j</sub>)太小所引起的問題;V表示類別的總數。vi

*

* <h3>條件機率</h3>

* <b>定義</b> 設A, B是兩個事件,且P(A)>0 稱<br>

* <tt>P(B∣A)=P(AB)/P(A)</tt><br>

* 爲在條件A下發生的條件事件B發生的條件機率。


*/


public class ClassConditionalProbability 

{

private static TrainingDataManager tdm = new TrainingDataManager();

private static final float M = 0F;


/**

* 計算類條件機率

* @param x 給定的文本屬性

* @param c 給定的分類

* @return 給定條件下的類條件機率

*/

public static float calculatePxc(String x, String c) 

{

float ret = 0F;

float Nxc = tdm.getCountContainKeyOfClassification(c, x);

float Nc = tdm.getTrainingFileCountOfClassification(c);

float V = tdm.getTraningClassifications().length;

ret = (Nxc + 1) / (Nc + M + V); //爲了不出現0這樣極端狀況,進行加權處理

return ret;

}

}

相關文章
相關標籤/搜索