给定概率用python计算信息熵
时间: 2023-07-01 14:28:16 浏览: 121
若已知每个事件发生的概率,可以直接使用公式计算信息熵。假设有3个事件,它们发生的概率分别为0.3、0.4、0.3,则可以通过以下代码计算信息熵:
```python
import math
p = [0.3, 0.4, 0.3]
entropy = 0
for pi in p:
entropy -= pi * math.log2(pi)
print('信息熵为:', entropy)
```
输出结果为:
```
信息熵为: 1.5774062828523454
```
其中,p是一个列表,包含每个事件发生的概率。接着通过循环计算每个事件的信息熵,并累加到entropy中。最终输出结果即为信息熵的值。
相关问题
用python实现功能:给定信号源的概率分布,计算信息熵
可以使用Python实现给定信号源的概率分布,计算信息熵的功能,具体代码如下:
```python
import math
def calc_entropy(probs):
# 计算信息熵
entropy = 0
for p in probs.values():
entropy -= p * math.log2(p)
return entropy
```
其中,`probs`是一个字典类型,key为信号源,value为对应的概率分布。函数直接使用信息熵的公式计算信息熵,并返回计算结果。可以在Python中调用该函数,并将信号源的概率分布作为参数传递给该函数来计算信息熵。
例如,假设我们有一个信号源,它的概率分布为:
```python
probs = {'A': 0.2, 'B': 0.1, 'C': 0.3, 'D': 0.4}
```
那么我们可以调用`calc_entropy`函数计算该信号源的信息熵:
```python
entropy = calc_entropy(probs)
print("信息熵为:", entropy)
```
输出结果为:
```
信息熵为: 1.8464393446710154
```
用python实现功能:对给定信息源,求信息熵
可以使用Python实现对给定信息源计算信息熵的功能,具体代码如下:
```python
import math
def calc_entropy(data):
# 统计每个数据出现次数
freq = {}
for d in data:
freq[d] = freq.get(d, 0) + 1
# 计算每个数据出现的概率
probs = {}
for d, count in freq.items():
probs[d] = count / len(data)
# 计算信息熵
entropy = 0
for p in probs.values():
entropy -= p * math.log2(p)
return entropy
```
其中,`data`表示输入的信息源。函数首先通过循环遍历每个数据,统计每个数据的出现次数。然后,根据出现次数计算每个数据出现的概率。最后,使用信息熵的公式计算信息熵,并返回计算结果。可以在Python中调用该函数来计算给定信息源的信息熵。
阅读全文