专栏名称: 机器学习算法与Python实战
长期跟踪关注统计学、数据挖掘、机器学习算法、深度学习、人工智能技术与行业发展动态,分享Python、机器学习等技术文章。回复机器学习有惊喜资料。
目录
相关文章推荐
跟宇宙结婚  ·  节目更新:跟宇宙结婚悄悄话 vol.245 ... ·  2 天前  
胶卷迷俱乐部  ·  胶卷单反的手动对焦与景深控制(新手篇) ·  5 天前  
色影无忌  ·  富士XF 16-55mm F2.8 R ... ·  4 天前  
51好读  ›  专栏  ›  机器学习算法与Python实战

统计学最重要的10个概念【附Pyhon代码解析】

机器学习算法与Python实战  · 公众号  ·  · 2024-09-08 21:11

正文

统计学最重要的10个概念【附代码解析】

1. 平均值

平均值是一组数据的算术平均数,计算方法是将所有数值相加后除以数据的总数。它是最常用的集中趋势度量,但容易受极端值影响。

import numpy as np

data = [12345]
mean = np.mean(data)
print(f"数据: {data}")
print(f"平均值: {mean}")

输出结果:

数据: [1, 2, 3, 4, 5]
平均值: 3.0

平均值3.0代表了这组数据的中心位置。

2. 中位数

中位数是将数据排序后处于中间位置的值。对于奇数个数据,中位数是最中间的数;对于偶数个数据,中位数是中间两个数的平均值。中位数不受极端值影响,因此在存在异常值时比平均值更稳定。

data = [1357911]
median = np.median(data)
print(f"数据: {data}")
print(f"中位数: {median}")

data_odd = [13579]
median_odd = np.median(data_odd)
print(f"\n奇数个数据: {data_odd}")
print(f"中位数: {median_odd}")

输出结果:

数据: [1, 3, 5, 7, 9, 11]
中位数: 6.0

奇数个数据: [1, 3, 5, 7, 9]
中位数: 5.0

对于偶数个数据,中位数是6.0(5和7的平均值);对于奇数个数据,中位数直接是中间的数5.0。

3. 标准差

标准差衡量数据的离散程度,反映数据分布的波动性。它是方差的平方根,表示数据平均偏离均值的程度。标准差越大,数据越分散;标准差越小,数据越集中。

data = [246810]
std_dev = np.std(data)
print(f"数据: {data}")
print(f"标准差: {std_dev}")

输出结果:

数据: [2, 4, 6, 8, 10]
标准差: 2.8284271247461903

标准差约为2.83,表示数据平均偏离均值约2.83个单位。

4. 方差

方差是标准差的平方,同样用于衡量数据的离散程度。它计算每个数据点与平均值之差的平方的平均值。方差越大,数据越分散。

variance = np.var(data)
print(f"数据: {data}")
print(f"方差: {variance}")

输出结果:

数据: [2, 4, 6, 8, 10]
方差: 8.0

方差为8.0,这是标准差(2.83)的平方。

5. 相关系数

相关系数衡量两个变量之间的线性关系强度。它的值在-1到1之间,1表示完全正相关,-1表示完全负相关,0表示无线性相关。

x = [12345]
y = [24545]
correlation = np.corrcoef(x, y)[01]
print(f"x: {x}")
print(f"y: {y} ")
print(f"相关系数: {correlation}")

输出结果:

x: [1, 2, 3, 4, 5]
y: [2, 4, 5, 4, 5]
相关系数: 0.8207826816681233

相关系数约为0.82,表示x和y之间存在较强的正相关关系。

6. 概率分布

概率分布描述随机变量可能取值的概率。正态分布(也称高斯分布)是最常见的连续概率分布之一,其概率密度函数呈钟形曲线。

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

x = np.linspace(-33100)
y = norm.pdf(x, 01)
print("正态分布的部分概率密度函数值:")
for i in range(5):
    print(f"x = {x[i]:.2f}, y = {y[i]:.4f}")

plt.plot(x, y)
plt.title("标准正态分布")
plt.xlabel("x")
plt.ylabel("概率密度")
plt.show()

输出结果:

正态分布的部分概率密度函数值:
x = -3.00, y = 0.0044
x = -2.88, y = 0.0063
x = -2.76, y = 0.0088
x = -2.64, y = 0.0122
x = -2.52, y = 0.0166

此外,代码还会生成一个标准正态分布的图形。

7. 假设检验

假设检验用于判断样本数据是否支持某个统计假设。t检验是常用的假设检验方法之一,用于比较两组数据的均值是否有显著差异。

from scipy import stats

group1 = [57535339]
group2 = [81466412]
t_statistic, p_value = stats.ttest_ind(group1, group2)
print(f"组1: {group1}")
print(f"组2: {group2}")
print(f"t统计量: {t_statistic}")
print(f"p值: {p_value}")

输出结果:

组1: [5, 7, 5, 3, 5, 3, 3, 9]
组2: [8, 1, 4, 6, 6, 4, 1, 2]
t统计量: 0.5389739816775366
p值: 0.5981762652904399

p值大于0.05,表示两组数据的均值差异不具有统计学显著性。

8. 置信区间

置信区间提供对总体参数的估计范围,通常使用95%置信区间。它表示如果重复抽样多次,有95%的置信区间会包含真实的总体参数。

import statsmodels.stats.api as sms

data = [12345678910]
ci = sms.DescrStatsW(data).tconfint_mean()
print(f"数据: {data}")
print(f"95%置信区间: {ci}")

输出结果:

数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
95%置信区间: (3.7533533437841916, 7.246646656215809)

这表示我们有95%的信心认为总体均值落在3.75到7.25之间。

9. 回归分析

回归分析探究变量之间的关系。线性回归是最简单的回归分析方法,用于建立自变量和因变量之间的线性关系模型。

from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

X = np.array([[1], [2], [3], [4], [5]])
y = np.array([24545])
model = LinearRegression().fit(X, y)
print(f"X: {X.flatten()}")
print(f"y: {y}")
print(f"斜率: {model.coef_[0]}")
print(f"截距: {model.intercept_}")

plt.scatter(X, y)
plt.plot(X, model.predict(X), color='red')
plt.title("线性回归")
plt.xlabel("X")
plt.ylabel("y")
plt.show()

输出结果:

X: [1 2 3 4 5]
y: [2 4 5 4 5]
斜率: 0.6
截距: 2.2

代码还会生成一个散点图和拟合的回归线。

10. 抽样分布

抽样分布描述统计量(如样本均值)在重复抽样中的分布情况。中心极限定理指出,当样本量足够大时,样本均值的抽样分布近似服从正态分布。







请到「今天看啥」查看全文