分类条件概率
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
package NaviveBayesClassify;
/**
* <b>類</b>條件概率計算
*
* <h3>類條件概率</h3>
* P(x<sub>j</sub>|c<sub>j</sub>)=( N(X=x<sub>i</sub>, C=c<sub>j
* </sub>)+1 ) <b>/</b> ( N(C=c<sub>j</sub>)+M+V ) <br>
* 其中,N(X=x<sub>i</sub>, C=c<sub>j</sub>)表示類別c<sub>j</sub>中包含屬性x<sub>
* i</sub>的訓練文本數(shù)量;N(C=c<sub>j</sub>)表示類別c<sub>j</sub>中的訓練文本數(shù)量;M值用于避免
* N(X=x<sub>i</sub>, C=c<sub>j</sub>)過小所引發(fā)的問題;V表示類別的總數(shù)。
*
* <h3>條件概率</h3>
* <b>定義</b> 設A, B是兩個事件,且P(A)>0 稱<br>
* <tt>P(B∣A)=P(AB)/P(A)</tt><br>
* 為在條件A下發(fā)生的條件事件B發(fā)生的條件概率。
*/
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); //為了避免出現(xiàn)0這樣極端情況,進行加權處理
return ret;
}
}
轉載于:https://my.oschina.net/u/2510243/blog/637162
總結
- 上一篇: Error:(108) No resou
- 下一篇: JSPatch近期新特性解析