分类条件几率

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;

}

}

相关文章
相关标签/搜索