关闭

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

3296人阅读 评论(4) 收藏 举报
分类:
用熵来评价整个随机变量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



1
0
查看评论

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

计算出每个词的信息熵可以用来作为词的权重,信息熵公式是: W代表该词,p代表该词左右出现的不同词的数目。 比如现在某篇文章中出现了两次 A W C, 一次B W D 那么W的左侧信息熵为: 2/3表示词组A在3次中出现了2次,B只出现了一次,故为1/3. W右侧的信息熵也是一样的。如果是A ...
  • lihaitao000
  • lihaitao000
  • 2016-06-29 16:15
  • 2281

机器学习算法——信息熵

信息熵(Entropy) 信息是个很抽象的概念。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本书中到底有多少信息量。直到 1948 年,香农(C. E. Shannon)提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。熵的概念发展成为信息论、数据...
  • ARYBD
  • ARYBD
  • 2017-04-12 00:06
  • 1484

机器学习1:信息熵

1.在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。信息熵也称信源熵、平均自信息量。 2.从直观上说,信息熵越大,变量包含的信息量越大,变量的不确定性也越大。一个事物内部会存在随机性,也就是不确定性,而从外部消除这个不确定性唯...
  • lcj200813138020
  • lcj200813138020
  • 2015-07-16 16:42
  • 1372

信息熵的计算

最近在看决策树的模型,其中涉及到信息熵的计算,这里东西是由信号处理中来的,理论部分我就不再重复前人的东西了,下面给出两个简单的公式: 当然学习过信号与系统的童鞋一定觉得这不是香农提出的东西吗?O(∩_∩)O~没错,就是这个东西,只不过我们用在了机器学习上,好了下面就看代码吧,这...
  • xueyunf
  • xueyunf
  • 2013-07-01 14:28
  • 3244

java_信息熵(Entropy)

  • 2011-10-25 15:58
  • 6KB
  • 下载

信息熵到底是什么

信息是我们一直在谈论的东西,但信息这个概念本身依然比较抽象。在百度百科中的定义:信息,泛指人类社会传播的一切内容,指音讯、消息、通信系统传输和处理的对象。 但信息可不可以被量化,怎样量化?答案当然是有的,那就是“信息熵”。早在1948年,香农(Shannon)在他著名的《通信的数学原理》论文中...
  • saltriver
  • saltriver
  • 2016-11-06 21:53
  • 13161

熵和信息增益

信息论中广泛使用的一个度量标准,称为熵(entropy),它刻画了任意样例集的纯度。给定包含关于某个目标概念的正反样例的样例集S,那么S相对于这个布尔型分类的熵为:     其中,p+代表正样例,比如p+则意味着去打羽毛球,而p-则代表反样例,不去打球。...
  • xiaoyu714543065
  • xiaoyu714543065
  • 2013-01-21 10:58
  • 5457

面试机试之求解字符串熵值

今天做了这道题目,信息熵很早就学过了,所以题目也不陌生了,简单来说,信息熵的计算公式为:某一事件出现的概率乘以它的对数形式的结果的负数就是该时间的信息熵,把一个集合里面的所有的事件的信息熵都加起来就行了,就可以得到了总的信息熵了,明白了这一点就很容易做这道题目了,因为计算量很小,所以代码几乎就是直接...
  • Together_CZ
  • Together_CZ
  • 2017-04-12 16:52
  • 995

python 计算信息熵和信息增益

1. 计算信息熵def calc_ent(x): """ calculate shanno ent of x """x_value_list = set([x[i] for i in range(x.shape[0])]) ent ...
  • autoliuweijie
  • autoliuweijie
  • 2016-08-18 19:43
  • 7912

信息熵计算(自己编写的python代码,垃圾,高手绕道)

# -*- coding:utf-8 -*- ''' Created on 2017年9月15日 @author: snow ''' import csv; import math; fileName = "AllElectronics....
  • guo20082200
  • guo20082200
  • 2017-09-16 10:30
  • 321
    个人资料
    • 访问:2027815次
    • 积分:28073
    • 等级:
    • 排名:第230名
    • 原创:782篇
    • 转载:62篇
    • 译文:1篇
    • 评论:191条
    博客专栏
    文章分类
    最新评论