首页 > 其他分享 >ML 系列:第 25 节 — 连续概率分布 (高斯分布)

ML 系列:第 25 节 — 连续概率分布 (高斯分布)

时间:2024-11-16 15:17:20浏览次数:3  
标签:25 plt ML 115 import mean 高斯分布 85

在这里插入图片描述

文章目录

一、说明

高斯分布是典型的连续函数的概率分布。然而,现实中我们只能用离散形式去表述,而使用连续分布在计算机上,就是需要技巧的。

二、关于高斯分布

高斯分布, 的,又称 正态分布, 的,是统计学和机器学习中最重要的概率分布之一。它的特点是钟形曲线,由两个参数定义:平均 (μ) 和标准差 (σ)。

概率密度函数 (PDF) 的高斯分布由下式给出:
在这里插入图片描述
此处:

平均(μ) 是分布的平均值,
方差 (σ²) 是分布的方差,
标准差 (σ) 是方差的平方根。
e (exp) 表示指数函数。
pi (Π) 是表示圆的周长与其直径之比的数学常数。它大约等于3.14159
可视化平均值和标准的高斯分布:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Parameters for different Gaussian distributions
params = [
    {'mean': 0, 'std_dev': 1, 'color': 'blue'},
    {'mean': 2, 'std_dev': 0.5, 'color': 'green'},
    {'mean': -3, 'std_dev': 2, 'color': 'red'}
]

# Generate the x-axis values
x = np.linspace(-10, 10, 1000)

# Plot each Gaussian distribution
plt.figure(figsize=(10, 6))
for param in params:
    mean = param['mean']
    std_dev = param['std_dev']
    color = param['color']
    
    # Calculate the Gaussian distribution
    y = norm.pdf(x, mean, std_dev)
    
    # Plot the distribution
    plt.plot(x, y, color=color, label=f'Mean: {mean}, Std Dev: {std_dev}')

# Add titles and labels
plt.title('Gaussian Distributions with Different Means and Standard Deviations')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.legend()

# Show the plot
plt.grid(True)
plt.show()

这是上述代码的输出:
在这里插入图片描述

图1-高斯分布具有不同的平均值和标准

注: 高斯分布围绕均值对称。

68–95–99.7 规则
68–95–99.7法则,也称为经验法则, 是一个简写,用于记住正态分布中与平均值存在一定数量标准差范围内的值的百分比。在数学表示法中,这些事实可以表达如下,其中 Pr() 是概率函数, Χ 是来自正态分布随机变量的观察, μ (mu) 是分布的平均值,并且 σ (sigma) 是其标准差:
在这里插入图片描述
68%锛屽悓姣斿% 的数据属于其中 一个标准差 的平均值。
95% 的数据属于其中 两个标准差 的平均值。
99.7% 的数据属于其中 三个标准差 的平均值。
Python 代码可视化 68–95–99.7 规则

### Python Code to Visualize the 68-95-99.7 Rule

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Mean and standard deviation
mean = 0
std_dev = 1

# Generate x values
x = np.linspace(-4, 4, 1000)

# Calculate the y values for the Gaussian distribution
y = norm.pdf(x, mean, std_dev)

# Create the plot
plt.figure(figsize=(12, 6))
plt.plot(x, y, label='Normal Distribution', color='blue')

# Fill areas under the curve
plt.fill_between(x, y, where=(x >= mean - std_dev) & (x <= mean + std_dev), color='green', alpha=0.5, label='68% (1 std dev)')
plt.fill_between(x, y, where=(x >= mean - 2 * std_dev) & (x <= mean + 2 * std_dev), color='yellow', alpha=0.3, label='95% (2 std dev)')
plt.fill_between(x, y, where=(x >= mean - 3 * std_dev) & (x <= mean + 3 * std_dev), color='red', alpha=0.2, label='99.7% (3 std dev)')

# Add titles and labels
plt.title('Visualization of the 68-95-99.7 Rule in a Normal Distribution')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.legend()

# Show the plot
plt.grid(True)
plt.show()

这是上述代码的输出:

在这里插入图片描述

图2-可视化 68–95–99.7 规则

在实证科学中,所谓的 三西格玛经验法则 (or 3σ 规则)表达了一种传统的启发式方法,即几乎所有值都被视为位于平均值的三个标准差范围内,因此将 99.7% 的概率视为接近确定性在经验上是有用的。

三、高斯分布的重要类型

在机器学习中,高斯分布的一些重要类型包括:

标准正态分布: 这是一条钟形曲线,带有 平均值为 0,标准差为 1。它常用于许多机器学习模型和算法,例如线性回归和逻辑回归。
多变量正态分布: 该分布用于对多个随机变量的联合分布进行建模。它在高斯混合物模型 (GMM)、主成分分析 (PCA) 和线性判别分析 (LDA) 等技术中至关重要。
Python代码来说明它们两者:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm, multivariate_normal

# Generate data for Standard Normal Distribution
data_standard = np.random.randn(1000)

# Generate data for Multivariate Normal Distribution
mean = [0, 0]
covariance_matrix = [[1, 0.5], [0.5, 1]]
data_multivariate = np.random.multivariate_normal(mean, covariance_matrix, 1000)

# Plot Standard Normal Distribution (Histogram and PDF)
plt.figure(figsize=(10, 8))

plt.subplot(2, 1, 1)
plt.hist(data_standard, bins=30, density=True, color='skyblue', edgecolor='black', alpha=0.7, label='Standard Normal Distribution')
x = np.linspace(-4, 4, 1000)
plt.plot(x, norm.pdf(x, 0, 1), 'r-', label='Standard Normal PDF')
plt.legend()
plt.title('Standard Normal Distribution')
plt.xlabel('Values')
plt.ylabel('Density')

# Plot Multivariate Normal Distribution (Scatter Plot)
plt.subplot(2, 1, 2)
plt.scatter(data_multivariate[:, 0], data_multivariate[:, 1], color='orange', alpha=0.5, label='Multivariate Normal Distribution')
plt.legend()
plt.title('Multivariate Normal Distribution')
plt.xlabel('X')
plt.ylabel('Y')

plt.tight_layout()
plt.show()

代码的输出:
在这里插入图片描述

图3-标准分布和多变量正态分布

四、了解 Python 中智商分数的 Z 核心和概率计算

问题。让我们考虑一个群体的智商分数,已知该分数遵循正态分布,其中 a 100的平均(μ) 和一个 15的标准差(σ)。我们想找到一个人拥有智商的概率 85到115之间。

回答

要找到一个人的智商在 85 到 115 之间的概率,我们需要遵循以下步骤:

第 1 步:计算 Z 分数
Z 分数是衡量数据点与平均值有多少标准差的指标。Yong公式计算得出:
在这里插入图片描述

其中 X 是值 (在这种情况下,IQ 分数),μ 是平均值 (100),σ 是标准差 (15)。

85的智商分数:
在这里插入图片描述

115的智商分数:
在这里插入图片描述

第 2 步:查找与 Z 分数相关的概率
我们使用标准正态分布的累积分布函数 (CDF) 来查找与 Z 分数相对应的概率。

对于与 85 IQ( 相关的 -1 ) 的 Z 分数:
在这里插入图片描述

对于 1 ( 的 Z 分数与 115 IQ) 相关:
在这里插入图片描述

3步:计算智商在85到115之间的概率
IQ介于85和115之间的概率, 我们从低于115的概率中减去低于85的概率:

P(85 < X < 115) = P(Z < 1) — P(Z < -1)
P(85 < X < 115) = 0.8413–0.1587
P(85 < X < 115) = 0.6826

因此,一个人的智商在 85 到 115 之间的概率是 0.6826。

python 代码来解决这个问题,这里有相应的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

mu = 100
sigma = 15

z1 = (85 - mu) / sigma
z2 = (115 - mu) / sigma

prob_85 = norm.cdf(z1)
prob_115 = norm.cdf(z2)

prob_between = prob_115 - prob_85

# Plotting the standard normal distribution
x = np.linspace(-3, 3, 1000)
y = norm.pdf(x, 0, 1)  # PDF of standard normal distribution

plt.figure(figsize=(10, 6))
plt.plot(x, y, label='Standard Normal Distribution PDF')
plt.fill_between(x, 0, y, where=(x >= z1) & (x <= z2), color='skyblue', alpha=0.5, label='P(85 < X < 115)')
plt.title('Standard Normal Distribution with Probability Area for IQ Scores between 85 and 115')
plt.xlabel('Z-score')
plt.ylabel('Probability Density')
plt.legend()
plt.grid()
plt.show()

print(f"The probability that an individual has an IQ between 85 and 115 is: {prob_between:.4f}")

代码的输出图形:
在这里插入图片描述

*图4-个人的智商在 85 到 115 之间的概率*

注:请看这两种计算:
在这里插入图片描述

这些概率是从标准正态分布表或统计软件包(例如 Python 的 SciPy 库)获得的标准值。

您可以在互联网上找到具有不同 Z 分数累积概率的标准正态分布表,或者使用 Python 中的 SciPy 库计算这些概率。的规范.cdf()SciPy 中的功能统计数据 模块计算 累积分布函数 (CDF) 给定的标准正态分布 Z 分数。在下面的代码中,norm.cdf(z_scors)计算提供的 Z 分数数组的累积概率。

这是 Python 中选定 Z 分数的标准正态分布表:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

z_scores = np.array([-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0])
probabilities = norm.cdf(z_scores)

plt.figure(figsize=(16, 10))
plt.plot(z_scores, probabilities, marker='o', linestyle='-')
for i, prob in enumerate(probabilities):
    plt.text(z_scores[i], prob, f'{prob:.4f}', ha='right' if i % 2 == 0 else 'left', va='bottom', bbox=dict(facecolor='green', alpha=0.5))

plt.title('Standard Normal Distribution Cumulative Probabilities for Specific Z-Scores')
plt.xlabel('Z-Score')
plt.ylabel('Cumulative Probability (P(Z < z))')
plt.grid()
plt.show()

这是上述代码的输出:
在这里插入图片描述

图5- 标准正态分布表
论 25日这一天 在我们的 ML 系列中,我们深入研究了 高斯分布, 的,探索其属性和应用。

标签:25,plt,ML,115,import,mean,高斯分布,85
From: https://blog.csdn.net/gongdiwudu/article/details/143817479

相关文章

  • 20222310 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    一、实验内容学习掌握Metasploit工具的使用。下载靶机Metasploitable2,完成以下实验内容。1.前期渗透(1)主机发现(可用Aux中的arp_sweep,search一下就可以use)(2)端口扫描(可以直接用nmap,也可以用Aux中的portscan/tcp等)(3)扫描系统版本,漏洞等2.Vsftpd源码包后门漏洞(21端口)3.SambaMS-R......
  • 20222423 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1内容回顾总结总而言之这周都重点在于Metasploit工具的使用时间上,对其功能和使用流程有了深入了解,也越发感叹道魔高一尺,道高一丈,好多漏洞如今的操作系统或者软件都已经修复,通过msf针对漏洞实施变得越发困难(重点点名本周的msf测试作业,让我一天都没吃上饭,基本上时间......
  • # 20222403 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容本实践目标是掌握metasploit的用法。指导书参考Rapid7官网的指导教程。https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/下载官方靶机Metasploitable2,完成下面实验内容。(1)前期渗透①主机发现(可用Aux中的arp_sweep,search一下就可以use)......
  • InDesign 2025 for Mac(Id2025)最新激活版20.0.0
    InDesign2025具备强大的功能和灵活的扩展性,支持插件扩展,用户可以根据自身需求自定义工具和工作流程。在处理复杂排版和多页面设计时,InDesign2025注重用户界面的友好性与功能的直观性,即使是新手用户也能快速上手。InDesign2025增强了多模态图文编辑能力,使得图像与文字的结合更......
  • 20222323 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容掌握metasploit的用法。下载官方靶机Metasploitable2,完成下面实验内容。(1)前期渗透①主机发现(可用Aux中的arp_sweep,search一下就可以use)②端口扫描:可以直接用nmap,也可以用Aux中的portscan/tcp等。③选做:也可以扫系统版本、漏洞等。(2)Vsftpd源码包后门漏洞(21端口)(3)S......
  • 20222306 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工具进行搜集......
  • 【深度学习】二、多层感知机(MLP)
    目录1什么是多层感知机1.1基本概念1.2 数学解释2多层感知机的结构3多层感知机的应用4代码实现4.1代码4.1.1 手动实现4.1.2运行结果4.2简洁实现4.2.1代码4.2.2运行结果4.3面向对象4.3.1代码4.3.2运行结果参考资料本人为小白,欢迎补充!1什么是......
  • 20222327 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    一、实验内容学习掌握了Metasploit工具的使用,具体的操作总结来说就是Search-Use-Show-Set-Exploit/run学习了利用相关漏洞进行模拟攻击的操作,对防范恶意攻击有了一些认识(安装杀软,不要点击陌生网站、文件链接等)二、实验过程1、前期渗透①主机发现(可用Aux中的arp_sweep,search一......
  • 本地oracle数据库实例启动报错 TNS-12545 TNS-12560 TNS-00515
    oracle实例启动报错TNS-12545TNS-12560TNS-00515具体提示如下:监听该对象时出错:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.docker.internal)(PORT=1521)))TNS-12545:因目标主机或对象不存在,连接失败TNS-12560:TNS:协议适配器错误TNS-00515:因目标主机或对......
  • 【Adobe Premiere pro 2025下载与安装教程】
    1、安装包 「AdobePremierePro2025」:链接:https://pan.quark.cn/s/e93beb96accb提取码:CGY22、安装教程1)       下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框  2)       选择安装目录,尽量不要选C盘,点击继续  3)       ......