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

原创 2017年01月03日 14:29:34
用熵来评价整个随机变量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



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

机器学习算法——信息熵

信息熵(Entropy) 信息是个很抽象的概念。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本书中到底有多少信息量。直到 1948 年,香农(C. E. Shannon)...
  • ARYBD
  • ARYBD
  • 2017-04-12 00:06
  • 642

计算文章中每个词的权重值-信息熵及代码实现

计算出每个词的信息熵可以用来作为词的权重,信息熵公式是: W代表该词,p代表该词左右出现的不同词的数目。 比如现在某篇文章中出现了两次 A W C, 一次B W D 那么W的左侧信息熵为: 2...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

【数据挖掘知识点三】大数定理与中心极限定理

知识点:大数定理与中心极限定理 大数定理与中心极限定理是与统计学密切相关的重要数学定理,为抽样推断提供了数学理论基础。 1、大数定理 即当n充分大时,事件A发生的频率接近...

flash as 3 socket资源(4)——同Socket服务器进行握手

4.同Socket服务器进行握手,并确定收到了什么样的数据和如何处理这些数据.解决方法:创建不同的常量来声明协议的状态.使用这些常量将指定的处理函数映射到相应的状态.在一个socketData事件控制...

机器学习笔记(一)绪论

1.绪论 1.1引言 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能;经验,则以数据的形式存在,故而,机器学习所研究的,正是在计算机上从数据中产生模型的算法,即学习算法。基于学习算...

born to do

其实好早就想写一点东西,但是无奈自己太懒,每次把想写的话在脑海中过一遍,第二天就忘了。今天,自制力总算是控制住了懒惰,况且,从昨天的实习结束后,我应该算一个准大四生了,总得做点什么。“总得做点什么”,...

HttpServlet详解

http://www.cnblogs.com/panjun-Donet/archive/2010/02/22/1671290.html Servlet的框架是由两个Java包组成:javax...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)