问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

数据科学中的数据分布:正态分布、二项分布和均匀分布

创作时间:
作者:
@小白创作中心

数据科学中的数据分布:正态分布、二项分布和均匀分布

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/training/modules/explore-data-for-data-science-microsoft-fabric/4-understand-data-distribution

在数据科学领域,了解数据分布是进行有效数据分析、可视化和模型构建的基础。本文将带你深入理解正态分布、二项分布和均匀分布等常见数据分布类型,并通过Python代码示例展示如何生成和可视化这些分布。

对于有效的数据分析、可视化和模型构建来说,了解数据的分布至关重要。如果数据集具有倾斜分布,则表示数据点分布不均匀,并且倾向于向右或向左倾斜。 这可能导致模型不准确地预测来自代表性不足的组的数据点,或者根据不适当的指标进行优化。

下面是了解数据分布可增强机器学习模型准确性的关键方面。

步骤
说明
探索性数据分析 (EDA)
了解数据的分布可更轻松地探索新的数据集和查找模式。
数据预处理
某些预处理技术(例如规范化或标准化)用于使数据更加正态分布,这是许多模型中的常见假设。
模型选择
不同的模型对数据的分布做出不同的假设。 例如,某些模型假设数据是正态分布的,如果违反此假设,模型可能表现不佳。
提高模型性能
转换目标变量来减少偏度可使目标线性化,这对许多模型都很有用。 这可以减少误差范围,还可能提高模型的性能。
模型相关性
将模型部署到生产环境后,请务必使其在最新数据的上下文中保持相关性。 如果存在数据倾斜,即数据分布在生产中与训练期间使用的内容相比发生了变化,则模型可能会脱离上下文。

了解数据分布可增强模型构建过程。 通过它,你可识别特征和目标中随机变量的均值、扩散和范围来建立更准确的假设。
让我们来探讨一些最常见的数据分布类型,例如正态分布、二项分布和均匀分布。

正态分布

正态分布由均值和标准偏差这两个参数表示。 均值指示钟形曲线的中心位置,标准偏差指示分布的扩散。
让我们来看一个正态分布特征的示例。 下面的代码生成用于
var
特征的数据来进行演示。

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# Set the mean and standard deviation
mu, sigma = 0, 0.1 

# Generate a normally distributed variable
var = np.random.normal(mu, sigma, 1000)

# Create a histogram of the variable using seaborn's histplot
sns.histplot(var, bins=30, kde=True)

# Add title and labels
plt.title('Histogram of Normally Distributed Variable')
plt.xlabel('Value')
plt.ylabel('Frequency')

# Show the plot
plt.show()

观察到
var
特征是正态分布的,其中均值和中值(50% 百分位数)预计大致相等。 对于倾斜分布,均值倾向于向更重的尾部倾斜。
然而,这些是启发式检查,实际确定使用Shapiro-Wilk测试或Kolmogorov-Smirnov正态性测试等特定统计测试来完成。

二项分布

假设你想了解在一群企鹅中观察到的特定特征有多好。
你决定检查一个包含 200 只企鹅的数据集,看看它们是否属于阿德尔物种。这是一个二项分布问题,因为有两种可能的结果(是或不是阿德尔物种)、试验数是固定的(200 只企鹅),并且每个试验都与其他试验独立。
分析数据集后,你发现有150 只企鹅属于阿德尔物种。
知道数据遵循二项分布,就可以对将来的企鹅数据集或企鹅组进行预测。 例如,如果你研究另一组 200 只企鹅,可以预计大约 150 只企鹅是阿德利企鹅。
以下 Python 代码绘制了
is_adelie
二项变量的直方图。
sns.histplot
中的
discrete=True
可确保将 bin 视为离散间隔。 这意味着直方图中的每个条与一个类别或布尔值完全对应,从而使绘图更容易解释。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Load the Penguins dataset from seaborn
penguins = sns.load_dataset('penguins')

# Create a binomial variable for 'species'
penguins['is_adelie'] = np.where(penguins['species'] == 'Adelie', 1, 0)

# Plot the distribution of 'is_adelie'
sns.histplot(data=penguins, x='is_adelie', bins=2, discrete=True)

plt.title('Binomial Distribution of Species')
plt.xticks([0, 1], ['Not Adelie', 'Adelie'])
plt.show()

均匀分布

均匀分布(也称为矩形分布)是一种概率分布,其中所有结果的概率都是相等的。 在分布的支撑点上,每个长度相同的间隔具有相同的概率。

import numpy as np
import matplotlib.pyplot as plt

# Generate a uniform distribution
uniform_data = np.random.uniform(-1, 1, 1000)

# Plot the distribution
![](https://wy-static.wenxiaobai.com/chat-rag-image/2093696872248920512)
plt.hist(uniform_data, bins=20, density=True)
plt.title('Uniform Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

在此代码中,
np.random.uniform
函数生成 1000 个随机数,这些随机数在 -1 和 1 之间均匀分布。
bins=30
参数指定应将数据划分为 30 个 bin,并且
density=True
确保将直方图归一化来形成概率密度。 这意味着直方图下方的面积总和为 1,这在比较分布时很有用。

注意
如果多次运行代码,可能会获得不同的结果。 随机性的基本思想是,它是不可预测的,并且每次采样时,都可获得不同的结果。
可使用
np.random.seed

设置种子值来控制此过程。这对于在模型构建阶段测试和调试非常有用,因为它允许重现相同的结果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号