机器学习知识点(一)文本字符信息熵Java实现
2017-01-03 14:29
246 查看
用熵来评价整个随机变量
平均的信息量,而平均最好的量度就是随机变量的期望,即熵的定义如下:
计算字符的信息熵,参考代码如下:
执行结果:
平均的信息量,而平均最好的量度就是随机变量的期望,即熵的定义如下:
计算字符的信息熵,参考代码如下:
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实现
- 机器学习知识点(七)决策树学习算法Java实现
- 机器学习知识点(三)方差和标准差Java实现
- 机器学习知识点(三十)LDA话题模型Java实现
- 机器学习知识点(五)梯度下降法Java实现
- 机器学习知识点(二十)矩阵奇异值分解基础知识及Java实现
- 机器学习知识点(九)BP神经网络Java实现
- java.io.BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
- 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
- 机器学习知识点(十八)密度聚类DBSCAN算法Java实现
- 机器学习知识点(十九)矩阵特征值分解基础知识及Java实现
- 机器学习入门算法及其java实现-Apriori(文本关联性)算法
- 机器学习知识点(十六)集成学习AdaBoost算法Java实现
- 机器学习知识点(八)感知机模型Java实现
- 机器学习知识点(四)最小二乘法Java实现
- javaweb-使用过滤器实现文本净化和字符转义
- 机器学习文本分类Improved Iterative Scaling算法以及JAVA实现
- 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库
- 重写label控件,实现文本的每个字符的颜色随机
- 用java实现文本形式的树状结构显示