机器学习知识点(一)文本字符信息熵Java实现

用熵来评价整个随机变量x平均的信息量,而平均最好的量度就是随机变量的期望,即熵的定义如下:

H[x]=-\sum_xp(x)log_2p(x)

计算字符的信息熵,参考代码如下:

package sk.ann;

import java.util.Scanner;

public class InfoEntropy {
	
	public static double Entropy(String str) {
		double H = .0;
		int sum = 0;
		int[] letter = new int[26];//26个字符
		str = str.toUpperCase(); // 将小写字母转换成大写
		for (int i = 0; i < str.length(); i++) { // 统计字母个数
			char c = str.charAt(i);
			if (c >= 'A' && c <= 'Z') {
				letter[c - 'A']++;
				sum++;
			}
		}
		//计算信息熵,将字母出现的频率作为离散概率值
		for (int i = 0; i < 26; i++) {
			double p = 1.0 * letter[i] / sum;//单个字母的频率
			if (p > 0)
				H += -(p * Math.log(p) / Math.log(2));// H = -∑Pi*log2(Pi) 
		}
		return H;
	}
		
		public static void main(String[] args) {
			System.out.println("请输入字符串:");
			Scanner scan = new Scanner(System.in);
			String str = scan.next();
			double H = Entropy(str);
			System.out.printf("%4.2f\n", H);
		}
}

执行结果:

请输入字符串:
are you ok!yes i am ok!
1.58



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjssharpsword/article/details/53994179
个人分类: Java Algorithm
所属专栏: 机器学习专栏
想对作者说点什么? 我来说一句

java_信息熵(Entropy)

2011年10月25日 6KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭