数学建模社区-数学中国

标题: 机器学习算法——信息熵 [打印本页]

作者: 重光兰衣    时间: 2018-11-2 08:53
标题: 机器学习算法——信息熵
机器学习算法——信息熵信息熵(Entropy)$ O1 Q5 j' g* R) c
        信息是个很抽象的概念。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本书中到底有多少信息量。直到 1948 年,香农(C. E. Shannon)提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。熵的概念发展成为信息论、数据压缩等学科的基础,在很多科学研究的领域尤其是计算机科学中有着广泛的应用。
! l3 {3 a7 {& ^4 \' w        实际上,一条信息的信息量大小和它的不确定性或存在概率有直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。因此可以认为信息熵是系统有序化程度的一个度量。 Shannon 借鉴了热力学的概念,把信息与其存在概率关联起来并称之为“信息熵”,并给出了计算信息熵的数学表达式:  H = - ∑  Pi * log2 Pi
% K$ S) D2 C, k! ]- j9 C2 t3 A' |6 z) P; ~) I$ c, u  R
假设有一个字符串要求它的信息熵,其中Pi是字符i出现的概率(该字符出现次数/所有字符数),然后将所有的Pi乘上取对数后的值log2 Pi后累加,最后取负,得到字符串的信息熵。: f- Q8 h- l' t2 @
本题要求计算给定字符串按照每个字符统计的信息熵。 ; v8 |' J1 O4 G5 Q4 B- D
输入:一个字符串,请忽略所有非字母的字符(即只关注a-z, A-Z),且不区分字母的大小写。
/ F, L; Y* U, x! K3 @" G$ Q提示:可以用StdIn.readAll()读入字符串的所有内容
' }2 {" n% ~2 |输出:对应字符串的熵值,输出请用格式化输出("%4.2f\n")
# E  O* C. j/ c/ R; p( q7 j样例输入:To be or not To be,↵
$ z% [9 g0 R, z) {# E' J, C, B0 Rthat is the question↵5 _- I8 A$ g& I1 i: t. d
样例输出:
/ M# L2 E( @) ~! i- f8 u 捕获.PNG
' ]; V0 x! Q1 X- f- s5 l, ~ 捕获.PNG
8 I+ o) P! p6 d4 `- W5 o  R% l1 [& t* q& }( L' v4 s& P
1 w" f. G5 H1 c9 @4 w6 t+ R% O

* q: _9 T! X; e, \( [, C
) g( y/ {+ t# r1 r- ]. o2 S, Q* e
- |; m0 B+ l! i& L1 j2 c0 U3 z& Q( l$ g0 A
0 Y. q5 @8 m7 K( T- s: z





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5