返回首页

无需 ML 的统计学:Python 中的关键方法

本文介绍统计方法作为 ML 的替代方案:加权平均、相关性、泊松分布和二项分布。使用 numpy 和 pandas 的 Python 代码示例,适用于商业任务。适合无需复杂模型的快速分析。

用统计学替代 ML:Python 数据工具
Advertisement 728x90

# 无需机器学习的数据分析统计方法

统计工具能让你快速评估数据,而无需复杂的机器学习模型。加权平均考虑了观测值的权重,标准差和方差揭示了数据的异质性,而泊松分布和二项分布则用于预测稀有事件。这些使用 Python、numpy 和 pandas 的方法,非常适合分析业务指标的中高级开发者。

加权平均:校正异常值扭曲

普通平均容易受异常值影响。以薪资 $10(总监)和 $0.10(清洁工,权重 10)为例,平均值为 $5.05,这并不反映实际情况。加权平均解决了这个问题:

import numpy as np

salary = np.array([10.0, 0.10])
weight = np.array([1, 10])

result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")

输出:$1.00。应用场景:

Google AdInline article slot
  • 按销售渠道分析收入,同时考虑流量。
  • 评估事件频率不同的指标。
  • 按权重对客户分段分组。

标准差和方差:评估稳定性

标准差衡量数据围绕均值的离散程度。以薪资 [500, 400, 450, 550, 5000] 为例:

import pandas as pd
import numpy as np

data = {
    "Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
    "Salary": [500, 400, 450, 550, 5000]
}

df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))

print(f"Standard deviation: {s:.2f}")

结果:2024.41 —— 强烈的异常值指标。方差(偏差的平方)用于比较数据集:

import numpy as np

sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)

print("Variance:", dispersion)

按天划分的离散度(工作日 vs 周末)需要数据分段。

Google AdInline article slot

皮尔逊相关:线性关系而非因果

皮尔逊相关系数评估线性依赖关系。公式:

import numpy as np

X = np.array([1, 2, 3, 4, 5])  # study hours
Y = np.array([50, 55, 60, 65, 70])  # test scores

x_mean = np.mean(X)
y_mean = np.mean(Y)

corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))

res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")

r=1.00 —— 完美相关。r² 表示解释变异的比例(在回归中为决定系数)。记住:相关不等于因果(例如:打高尔夫与老年人死亡率)。

卡方检验:检验期望与实际

卡方比较观测值 (O) 和期望值 (E):

Google AdInline article slot
import numpy as np

O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14])  # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # expected

xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")

条件:长度相同,E > 0。值越大,差异越大。用于验证预测。

泊松分布:建模稀有事件

对于具有恒定强度 λ(每间隔平均值)的事件。k 个事件的概率:

import math

λ = 3   # srednesutochnoe count requests
k = 5   

prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")

结果:0.1008。假设:独立性、恒定概率、一次一个事件。应用:

  • 预测支持呼叫。
  • 估算网站订单。
  • 分析安全事件。
  • 金融风险。

二项分布:试验中的成功次数

对于 n 次试验,每次成功概率 p。k 次成功的概率:

import math

n = 100
k = 70
p = 0.7

b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")

示例:邮件打开率、A/B 测试、质量控制。

指数分布:事件间隔时间

在 λ 下,事件在时间 x 后发生的概率:

import math

lambd = 4    # vyzovov/hour
x = 1 / 3    # 20 min

prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")

用于队列、设备停机时间。

关键要点

  • 加权平均和偏差可在无需机器学习的情况下检测扭曲。
  • 相关评估关系,r² —— 解释变异。
  • 泊松和二项 —— 用于业务事件预测。
  • 卡方用最小数据验证假设。
  • 所有方法可用 numpy/pandas 实现,无需 GPU。

— Editorial Team

Advertisement 728x90

继续阅读