Day 59

一、学习内容

  1. 今天把数值型数据处理的代码加上去.
  2. 假设所有属性的属性值都服从高斯分布. 也可以做其它假设.
  3. 将概率密度当成概率值直接使用 Bayes 公式.
  4. 可以看到, 数值型数据的处理并不会比符号型的复杂.
/**
 ********************
 * Classify an instances with numerical data.
 ********************
 */
public int classifyNumerical(Instance paraInstance) {
	// Find the biggest one
	double tempBiggest = -10000;
	int resultBestIndex = 0;

	for (int i = 0; i < numClasses; i++) {
		double tempPseudoProbability = Math.log(classDistributionLaplacian[i]);
		for (int j = 0; j < numConditions; j++) {
			double tempAttributeValue = paraInstance.value(j);
			double tempSigma = gaussianParameters[i][j].sigma;
			double tempMu = gaussianParameters[i][j].mu;

			tempPseudoProbability += -Math.log(tempSigma) - (tempAttributeValue - tempMu)
					* (tempAttributeValue - tempMu) / (2 * tempSigma * tempSigma);
		} // Of for j

		if (tempBiggest < tempPseudoProbability) {
			tempBiggest = tempPseudoProbability;
			resultBestIndex = i;
		} // Of if
	} // Of for i

	return resultBestIndex;
}// Of classifyNumerical

/**
 ************************* 
 * Test numerical data.
 ************************* 
 */
public static void testNumerical() {
	System.out.println(
			"Hello, Naive Bayes. I only want to test the numerical data with Gaussian assumption.");
	String tempFilename = "D:/data/iris.arff";

	NaiveBayes tempLearner = new NaiveBayes(tempFilename);
	tempLearner.setDataType(NUMERICAL);
	tempLearner.calculateClassDistribution();
	tempLearner.calculateGausssianParameters();
	tempLearner.classify();

	System.out.println("The accuracy is: " + tempLearner.computeAccuracy());
}// Of testNominal

public static void main(String[] args) {
	testNominal();
	testNumerical();
}// Of main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值