【Python教程】NumPy 正态分布与 Seaborn 可视化指南

零 Python教程评论123字数 1509阅读5分1秒阅读模式

正态分布(高斯分布)

简介

正态分布(又名高斯分布)是一种关键的概率分布,用于描述众多自然和社会现象的数据分布。它的图形是钟形的,以平均值为中心,两边呈对称性递减。

特征

正态分布可以用两个参数来完全描述:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

均值(μ):表示数据的平均值,分布的峰值位于 μ 处。 标准差(σ):表示数据的离散程度,数值越大,分布越平坦。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

生成正态分布数据

NumPy 提供了 random.normal() 函数来生成服从正态分布的随机数。该函数接受以下参数:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

loc:正态分布的均值,默认为 0。 scale:正态分布的标准差,默认为 1。 size:输出数组的形状。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

示例:生成 100 个服从正态分布的随机数,均值为 5,标准差为 2:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

python

复制代码
  1. import numpy as np
  2. data = np.random.normal(loc=5, scale=2, size=100)
  3. print(data)

可视化正态分布

Seaborn 库提供了便捷的函数来可视化分布,包括正态分布。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

示例:绘制服从正态分布的数据的分布图:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

python

复制代码
  1. import seaborn as sns
  2. import numpy as np
  3. data = np.random.normal(size=1000)
  4. sns.distplot(data)
  5. plt.show()

应用

正态分布在许多领域都有应用,例如:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

统计学:用于推断总体参数,进行假设检验等。 机器学习:用于数据预处理,特征工程等。 金融:用于建模股票价格、汇率等金融数据。 工程:用于控制质量、可靠性分析等。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

练习

  1. 生成 500 个服从正态分布的随机数,均值为 10,标准差为 3,并绘制它们的分布图。
  2. 比较不同标准差下正态分布形状的变化。
  3. 利用正态分布来模拟一次考试成绩,并计算平均分和标准分。

解决方案

python

复制代码
  1. import seaborn as sns
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. # 1. 生成服从正态分布的随机数并绘制分布图
  5. data = np.random.normal(loc=10, scale=3, size=500)
  6. sns.distplot(data)
  7. plt.show()
  8. # 2. 比较不同标准差下正态分布形状的变化
  9. sns.distplot(np.random.normal(size=1000, scale=1), label="σ=1")
  10. sns.distplot(np.random.normal(size=1000, scale=2), label="σ=2")
  11. sns.distplot(np.random.normal(size=1000, scale=3), label="σ=3")
  12. plt.legend()
  13. plt.show()
  14. # 3. 模拟考试成绩并计算平均分和标准分
  15. scores = np.random.normal(loc=80, scale=10, size=100)
  16. print("平均分:", scores.mean())
  17. print("标准分:", (scores - scores.mean()) / scores.std())

解释:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/15234.html

在第一个练习中,我们生成了 500 个服从正态分布的随机数,均值为 10,标准差为 3,并使用 Seaborn 的 distplot() 函数绘制了它们的分布图。 在第二个练习中,我们生成了三个服从正态分布的数据集,分别设置标准差为 1、2 和 3,并使用 Seaborn 的 distplot() 函数绘制了它们的分布图。我们可以观察到,随着标准差的增加,分布变得更加平坦,两侧的尾巴更加明显。 在第三个练习中,我们模拟了一次考试成绩,假设成绩服从正态分布,均值为 80,标准差为 10。然后,我们计算了考试成绩的平均分和标准分。

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/pythonjc/15234.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论