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

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

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

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

  1. 机器学习知识点(七)决策树学习算法Java实现

    为理解机器学习第四章节决策树学习算法,通过网上找到的一份现成代码,主要实现了最优划分属性选择和决策树构造,其中最优划分属性选择采用信息增益准则.决策树构造采用递归实现,代码如下: package sk ...

  2. 机器学习知识点(三)方差和标准差Java实现

    1.方差:方差是各个数据与平均数之差的平方的平均数. 2.标准差: 标准差(Standard Deviation) 各数据偏离平均数的距离(离均差)的平均数,它是离差平方和平均后的方根.用σ表示.因此 ...

  3. 机器学习知识点(二)各类型平均数Java实现

    代码如下: package sk.ann;import java.text.DecimalFormat; import java.util.Random;/** 功能:计算并比较各类型平均数,调和&l ...

  4. 一天1个机器学习知识点(一)

    陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天 ...

  5. 【Windows编程】系列第三篇:文本字符输出

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...

  6. 一天1个机器学习知识点(四)

    陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天 ...

  7. 一天1个机器学习知识点(二)

    陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天 ...

  8. Oracle的字符串转换成二进制,将二进制字符串解析为文本/字符

    我可能忽略了一些愚蠢的东西,但我从来没有必要在代码中处理二进制文件,并认为在加密程序中练习它是个好主意, .长话短说,我能够将字符串转换为二进制(以字符串的形式),但无法弄清楚如何做相反的操作.将二进 ...

  9. java font 像素_Java字体前进,字符宽度(Java Font Advance, Char Width)

    Java字体前进,字符宽度(Java Font Advance, Char Width) 上下文 以下代码生成一个"好看"的"Hello World" grap ...

最新文章

  1. laravel框架集成PHPExcel讲解及demo
  2. centos 7 mysql 默认_centos7 mysql 5.6.30 默认配置文件
  3. php图片居中在div,css如何实现图片在div中垂直居中
  4. QQlook--QQ空间密码 相册密码查看工具 国庆版 V2.4
  5. 电商项目测试核心内容
  6. 图形学基础|环境光遮蔽(Ambient Occlusion)
  7. View的事件分发机制
  8. Tiny6410 U-boot移植
  9. 电脑端微信文件的存储位置在哪?
  10. 棱镜-分布式实时计算的跟踪校验系统
  11. vue脚手架安装时出现Error EPERM operation not permitted这个错误
  12. 年产2000t搅拌型发酵酸奶车间工艺设计
  13. Qt中LineEdit编辑框限制数字输入整理
  14. 74LS85的IP核设计
  15. 防盗号,超安全,多次加密,超强密码管理方式吐血推荐
  16. 如何将文件由PDF转换为JPG图片
  17. CQF笔记M2L2优化理论及其在资产组合选择中的应用
  18. 超高荧光量子产率近红外金纳米团簇
  19. 【第100题】元音统计 | 乘法原理加速计算
  20. C++学习——共勉(一)

热门文章

  1. java paysign_微信支付签名算法java版本-其他地方都可通用
  2. python人工智能学多久_Python人工智能学习需要多久?什么学历可以学习?
  3. idea每次都要配置tomcat_电脑每次开机时间都不对?电脑每次开机都要重新设置时间解决方法...
  4. vsphere linux硬盘热添加
  5. Windows 环境下载安装Docker
  6. Vue 组件中 移动 this.$el 的注意事项
  7. 谈大数据里各子项目搭建时的环境变量配置(深入)
  8. c# winForm DotNetBar控件之SuperGridControl
  9. P3390矩阵快速幂
  10. IIS7整合Tomcat6