数学建模社区-数学中国
标题:
机器学习算法——信息熵
[打印本页]
作者:
重光兰衣
时间:
2018-11-2 08:53
标题:
机器学习算法——信息熵
机器学习算法——信息熵
信息熵(Entropy)
5 |9 o4 Y# P% V0 G& f( n3 u& _, d# p) f
信息是个很抽象的概念。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本书中到底有多少信息量。直到 1948 年,香农(C. E. Shannon)提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。熵的概念发展成为信息论、数据压缩等学科的基础,在很多科学研究的领域尤其是计算机科学中有着广泛的应用。
, K0 i$ T+ C8 y3 R0 A$ z7 z
实际上,一条信息的信息量大小和它的不确定性或存在概率有直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。因此可以认为信息熵是系统有序化程度的一个度量。 Shannon 借鉴了热力学的概念,把信息与其存在概率关联起来并称之为“信息熵”,并给出了计算信息熵的数学表达式:
H = - ∑ P
i
* log
2
P
i
; q8 @" L/ u: b v ^: Y; s ?7 M7 _
( A/ b) _6 K7 w% N+ k7 T
假设有一个字符串要求它的信息熵,其中Pi是字符i出现的概率(该字符出现次数/所有字符数),然后将所有的Pi乘上取对数后的值log2 Pi后累加,最后取负,得到字符串的信息熵。
. S$ u6 v1 |! o2 x4 B( x9 w
本题要求计算给定字符串按照每个字符统计的信息熵。
# x) m# q! G1 P. k% K$ }6 W
输入:一个字符串,请忽略所有非字母的字符(即只关注a-z, A-Z),且不区分字母的大小写。
( V7 M( _# O( C# \; k& E$ p
提示:可以用StdIn.readAll()读入字符串的所有内容
4 Q: c, ~0 C& { H9 [" Y! B, s
输出:对应字符串的熵值,输出请用格式化输出("%4.2f\n")
4 d# J1 W4 p1 K, ~, B1 j
样例输入:To be or not To be,↵
- z! V. C# E' z$ W
that is the question↵
3 A9 E. \' l2 g' V6 K
样例输出:
' K% l8 g; @- A
2018-11-2 08:52 上传
下载附件
(138.65 KB)
$ H# E# G& h' W1 i& g4 ^
2018-11-2 08:53 上传
下载附件
(38.27 KB)
H. x3 K: E) j2 M
4 s/ D* W/ k& K6 z: v# f
" G/ k' m( K: N
+ A! r! L: T' U6 u% J$ S
8 v/ c% z) U5 `
" j: a, X+ G& w/ e0 C1 l+ S
2 y, |8 \+ W! \3 B0 Q. q" w
4 r1 q+ r( j$ ]" w1 V
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5