概率论常用指标代码转化

发布于:2023-01-14 ⋅ 阅读:(205) ⋅ 点赞:(0)

1、幂律曲线

幂律分布是指某个具有分布性质的变量,且其分布密度函数是幂函数(由于分布密度函数必然满足“归一律”,所以这里的幂函数,一般规定小于负1)的分布。

幂律分布表现为一条斜率为幂指数的负数的直线,这一线性关系是判断给定的实例中随机变量是否满足幂律的依据。

统计物理学家习惯于把服从幂律分布的现象称为无标度现象,即,系统中个体的尺度相差悬殊,缺乏一个优选的规模。可以说,凡有生命的地方,有进化,有竞争的地方都会出现不同程度的无标度现象。

自然界与社会生活中存在各种各样性质迥异的幂律分布现象,因而对它们的研究具有广泛而深远的意义。当样本数据较多时,变量x的概率密度函数:f(x)~x^(-α-1)。

幂律分布经常被用于自然和社会等各种现象。它比正态分布延伸范围更广泛,可以处理极端罕见的现象,如股票市场崩溃。财富分配符合这一分布,穷人总是绝大部分,越有钱的又少,但是越少的人掌握着越丰厚的财富。
表示幂律的表达式如下,其中c和k是常数:

f(x) = cx^{-k}

通过公式转化为代码如下:

import numpy as np
import matplotlib.pyplot as  plt


def power_func(x, c, k):
    return c * x ** (-k)  # 幂律分布表达式


x = np.linspace(1, 5)
y_1 = power_func(x, 1.0, 1.0)  # c:1.0 k:1.0
y_2 = power_func(x, 1.0, 2.0)  # c:1.0 k:2.0
y_3 = power_func(x, 1.0, 4.0)  # c:1.0 k:4.0

plt.plot(x,y_1,label="k=1.0",linestyle="dashed")
plt.plot(x,y_2,label="k=2.0",linestyle="dashed")
plt.plot(x,y_3,label="k=4.0",linestyle="dashed")
plt.legend()
plt.xlabel("x",size=14)
plt.ylabel("y",size=14)
plt.grid()
plt.show()

2、正态分布

正态分布(又称高斯分布)是一种非常适用于自然界和人类的行动、性质等各种现象的数据分布。例如,产品的尺寸、人的身高、测试成绩等基本遵循正态分布。
u(读:米欧)表示位于分布中心的平均值,o(读:西葛马)表示分布扩展状态的标准差。正态分布曲线由以下被称为概率密度丽数的函数表示:

通过公式转化代码如下

import numpy as np
import matplotlib.pyplot as plt


def pdf(x, mu, sigma):
    return 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - mu) ** 2 / (2 * sigma ** 2))  # 概率密度函数


x = np.linspace(-5, 5)
y_1 = pdf(x, 0, 0.5)  # 平均值为0,标准差为0.5
y_2 = pdf(x, 0, 1.0)  # 平均值为0,标准差为1.0
y_3 = pdf(x, 0, 2.0)  # 平均值为0,标准差为2.0

plt.plot(x, y_1, label=" :0.5", linestyle="dashed")
plt.plot(x, y_2, label=" :1.0", linestyle="dashed")
plt.plot(x, y_3, label=" :2.0", linestyle="dashed")
plt.legend()
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
plt.grid()
plt.show()

3、熵

信息论中嫡的概念首次被香农提出,目的是寻找一种高效/无损地编码信息的方法:以编码后数据的平均长度来衡量高效性,平均长度越小越高效;同时还需满足“无损”的条件,即编码后不能有原始信息的丢失。这样,香农提出了嫡的定义:无损编码事件信息的最小平均编码长度。

嫡H的定义式如下:

 通过公式转化代码如下:
 

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.01, 0.99)
y = -x * np.log2(x) - (1 - x) * np.log2(1 - x)  # 熵
plt.plot(x, y)
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
plt.grid()
plt.show()

4、交叉熵

交叉嫡是衡量概率分布与预期值之间的距离的尺度。

交叉熵由下文公式确立

 根据公式代码转化如下

import numpy as np

delta = 1e-7  # 微小值


def cross_entropy(p, t):
    return -np.sum(t * np.log(p + delta) + (1 - t) * np.log(1 - p + delta))  # 交叉熵


# 与正确答案相悖
p_1 = np.array([0.2, 0.8, 0.1, 0.3, 0.9, 0.7])
p_2 = np.array([0.7, 0.3, 0.9, 0.8, 0.1, 0.2])
# 与正确答案相近
t = np.array([1, 0, 1, 1, 0, 0])  # 正确回答问题

print("---预测结果与正确答案相悖---")
print(cross_entropy(p_1, t))
print("---预测结果与正确答案相近---")
print(cross_entropy(p_2, t))


网站公告

今日签到

点亮在社区的每一天
去签到