- 在线时间
- 538 小时
- 最后登录
- 2023-6-27
- 注册时间
- 2015-11-2
- 听众数
- 29
- 收听数
- 1
- 能力
- 0 分
- 体力
- 21621 点
- 威望
- 0 点
- 阅读权限
- 60
- 积分
- 6862
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 749
- 主题
- 600
- 精华
- 0
- 分享
- 0
- 好友
- 10
TA的每日心情 | 奋斗 2023-5-24 09:14 |
|---|
签到天数: 119 天 [LV.6]常住居民II
 群组: 2018高中组美赛 课堂 群组: 2018国赛冲刺 群组: 2018 夏令营面授课堂 群组: 2016美赛交流群组 |
机器学习算法——信息熵信息熵(Entropy)
9 H; d5 C0 `+ Y4 [* a7 u9 G1 C 信息是个很抽象的概念。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本书中到底有多少信息量。直到 1948 年,香农(C. E. Shannon)提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。熵的概念发展成为信息论、数据压缩等学科的基础,在很多科学研究的领域尤其是计算机科学中有着广泛的应用。2 B$ K7 Y( M# \: f$ c- P
实际上,一条信息的信息量大小和它的不确定性或存在概率有直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。因此可以认为信息熵是系统有序化程度的一个度量。 Shannon 借鉴了热力学的概念,把信息与其存在概率关联起来并称之为“信息熵”,并给出了计算信息熵的数学表达式: H = - ∑ Pi * log2 Pi
2 ^- b) f X- X/ ]# B& [8 [8 L/ y" g4 I4 b( J( W; h6 a: D! J' W
假设有一个字符串要求它的信息熵,其中Pi是字符i出现的概率(该字符出现次数/所有字符数),然后将所有的Pi乘上取对数后的值log2 Pi后累加,最后取负,得到字符串的信息熵。( Q' m5 R# [; r: @ k7 F5 t
本题要求计算给定字符串按照每个字符统计的信息熵。
+ n: m7 ]7 ^" j- Q: e6 N5 [输入:一个字符串,请忽略所有非字母的字符(即只关注a-z, A-Z),且不区分字母的大小写。
3 o3 ^& S i) P+ _! C* F提示:可以用StdIn.readAll()读入字符串的所有内容, E7 M; D! u T0 g# B
输出:对应字符串的熵值,输出请用格式化输出("%4.2f\n") + v! [8 Y+ a: t( H, e/ j% x% ~
样例输入:To be or not To be,↵) [0 ~* @# X! k4 f% N9 n( L" D
that is the question↵9 o. T) A3 x+ r4 E- b3 v4 n3 m
样例输出:
" b; L, k4 \% V6 s& z
; T* Z5 Y% `" h. S4 }# d- s
& ]7 [3 n4 p& I" v3 P/ ~& C7 n. A; T) Y6 m) H
; o6 H3 {! w- {* ?: a0 D
) q/ _9 N7 e6 N8 {6 D7 |7 w% v
. ]9 d: ?7 U7 X$ Q/ u7 [2 b+ u* @
$ d0 Q6 b0 ^; A+ {# U( X% N- ?
6 f! z* V# E3 h8 R1 e# u" W$ @0 K, h7 D+ {
4 {* B7 v) U+ h7 V |
zan
|