首页 / 资讯中心 / 文章详情

[人工智能]Python02:NumPy.Statistics统计实战指南

[人工智能]Python02:NumPy.Statistics统计实战指南 ★ FEATURED ARTICLE
NumPy 统计实战指南一份实用 NumPyy.Statistics 统计指南覆盖描述统计、聚合、分位数、变异性、协方差、直方图和重采样。对向量、矩阵和批次数据使用明确的 axis 统计。区分位置、离散程度、形状、依赖性和不确定性。有意识地处理 NaN、权重、异常值和样本自由度。使用图形、已知恒等式和可复现实例验证统计摘要。示例均为独立代码片段可复制到 Python 3 环境中运行。1. 数据形状、轴与统计摘要NumPy 统计函数本质上是数组运算。同一个函数可以根据 axis 汇总整个数组、每一行、每一列或一个批次。在计算统计量前应定义一行或一个元素代表什么以及哪个轴保存观测。函数用途重要参数mean算术平均axis、dtype、wheremedian中位数axis、overwrite_inputsum总和或加权累积axis、dtype、keepdimsstd标准差ddof、axisvar方差ddof、axismin / max极值axis、where、initialaverage加权或非加权平均weights、returnedimport numpy as npscores np.array([[80, 90, 70], [65, 75, 85], [95, 88, 92]], dtypefloat)print(overall:, scores.mean())print(per student:, scores.mean(axis1))print(per subject:, scores.mean(axis0))print(keepdims:, scores.mean(axis0, keepdimsTrue).shape)Axis 约定axisNone 把全部元素归约为一个标量。对于矩阵axis0 压缩行并为每列返回结果axis1 压缩列并为每行返回结果。keepdimsTrue 保留被压缩的轴使结果可以与原数组广播。可复用函数和测试中使用 observation_axis 或 feature_axis 等明确名称。2. 位置、分布与稳健摘要位置统计描述数据的中心。均值使用所有数据容易受极端值影响中位数基于排序通常对异常值更稳健。直方图或密度式图形很重要因为两个数据集可能拥有相同均值和标准差却有完全不同的分布形状。图 1当分布偏态或多峰时均值和中位数可能不同。图 2异常值对均值和标准差的影响可能比对中位数更强。values np.array([4, 5, 5, 6, 7, 100], dtypefloat)mean np.mean(values)median np.median(values)trimmed_like np.mean(np.sort(values)[1:-1])print(mean, median, trimmed_like)摘要优点限制均值使用全部数据代数性质方便对异常值和偏态敏感中位数稳健的位置摘要不便于直接代数建模最小/最大展示支持范围和极值对样本量非常敏感极差简单的离散程度只使用两个观测几何均值乘法尺度下有意义要求数据为正加权平均反映不同观测重要性权重必须有依据稳健性取决于上下文稳健统计量不一定就是正确统计量。如果极端值是真实且重要的事件删除或降低其权重可能掩盖过程的重要部分。应报告检测、保留、变换或排除异常值所使用的规则。3. 方差、标准差与自由度方差衡量相对于中心的平均平方偏离标准差把离散程度恢复到原始单位。NumPy 的 ddof 控制除数ddof0 使用总体式除数 nddof1 使用常见的样本方差除数 n−1。选择应匹配数组是要描述的完整总体还是用来估计总体量的样本。values np.array([8.0, 9.0, 10.0, 12.0, 11.0])mean values.mean()population_variance values.var(ddof0)sample_variance values.var(ddof1)sample_std values.std(ddof1)standard_error sample_std / np.sqrt(values.size)print(mean, population_variance, sample_variance, standard_error)量NumPy 表达式用途总体方差x.var(ddof0)描述完整有限集合样本方差x.var(ddof1)估计总体方差总体标准差x.std(ddof0)完整集合的离散程度样本标准差x.std(ddof1)样本离散程度估计均值标准误x.std(ddof1)/sqrt(n)假设下的抽样不确定性单位与缩放方差具有平方单位标准差具有原始单位。给所有值加常数会改变均值但不会改变标准差。把值乘以 c 会使标准差乘以 |c|方差乘以 c²。标准差小不代表测量准确因为测量过程仍可能有系统偏差。4. 分位数、百分位数、直方图与经验形状分位数根据排序位置描述数值。第 50 百分位是中位数四分位距是第 75 百分位减去第 25 百分位。NumPy 支持多种百分位插值方法因此在要求精确复现的场景中应记录 method。图 3分位数标记偏态样本分布中的位置。图 4直方图的外观强烈依赖分箱数量。values np.random.default_rng(2026).lognormal(2.0, 0.55, size3000)quantiles np.quantile(values, [0.05, 0.25, 0.5, 0.75, 0.95])iqr np.subtract(*np.quantile(values, [0.75, 0.25]))hist_counts, bin_edges np.histogram(values, binsauto, densityFalse)print(quantiles, iqr)print(hist_counts[:5], bin_edges[:5])统计量定义解释p05 / p95第 5 / 95 百分位尾部参考位置Q1 / Q3第 25 / 75 百分位中间一半的边界中位数第 50 百分位排序中心位置IQRQ3 − Q1稳健的中心离散程度直方图分箱中的计数形状依赖分箱边界密度直方图面积归一化为 1比较分布形状百分位数方法与表达对于有限样本分位数可能位于两个观测之间不同方法会采用不同插值。一般可以使用默认方法但报告、监管计算或测试要求精确复现时应明确记录 method。5. 协方差、相关性与组间比较协方差描述原始单位下的共同变化相关系数把它缩放为无量纲值。NumPy 提供 cov 和 corrcoef但结果取决于数据方向和自由度选择。应结合图形检查关联并且不能把关联解释为因果。图 5协方差产生有方向的数据云相关系数总结线性关联。图 6带标准差线的组均值展示中心和一种离散程度。rng np.random.default_rng(2026)X rng.multivariate_normal([0, 0], [[1.0, 0.7], [0.7, 1.5]], size1000)covariance np.cov(X, rowvarFalse, ddof1)correlation np.corrcoef(X, rowvarFalse)weights np.array([1.0, 2.0, 1.0, 3.0])values np.array([10.0, 12.0, 11.0, 15.0])weighted_mean np.average(values, weightsweights)print(covariance)print(correlation)print(weighted_mean)工具输出注意事项cov协方差矩阵单位和行列方向很重要corrcoef相关矩阵只总结线性依赖average(weights)加权均值权重需要抽样或业务含义mean(axis)组均值或特征均值说明观测轴std(axis)组离散程度或特征离散程度有意识选择 ddof相关性注意事项异常值可能支配协方差和相关系数。非线性关系可能拥有较低的 Pearson 相关。共同趋势或第三个变量可能造成表面关联。配对或重复观测应在计算变化时保留配对关系。6. 缺失值、掩码与 Bootstrap 风格的不确定性NaN 需要明确处理策略。普通归约会传播 NaNnanmean、nanstd、nanmedian 等函数忽略 NaN但会改变有效样本量。masked array 或 where 参数可以表达有效性规则避免把缺失值静默当作零。图 7有放回重采样为均值估计产生经验分布。values np.array([10.0, 11.0, np.nan, 13.0, 12.0])print(np.mean(values))print(np.nanmean(values))print(np.nanstd(values, ddof1))valid np.isfinite(values)print(np.mean(values, wherevalid))rng np.random.default_rng(2026)observed values[valid]bootstrap_means np.array([rng.choice(observed, sizeobserved.size, replaceTrue).mean()for _ in range(5000)])print(np.quantile(bootstrap_means, [0.025, 0.975]))情况NumPy 模式需要决定NaN 感知均值np.nanmean(x)NaN 是随机缺失还是结构性缺失有限值掩码wherenp.isfinite(x)哪些值有效掩码数据np.ma.masked_invalid(x)有效性是否随数据传播Bootstrap 均值choice(..., replaceTrue)重采样单位是什么Bootstrap 区间quantile(bootstrap, [...])采用哪种区间方法不确定性不自动等于置信度Bootstrap 分布描述所选重采样方案下的变异。只有当样本和重采样单位代表目标过程时才能把它作为有意义的不确定性表达。相关时间序列、聚类观测和极小样本需要专门设计。7. 可复现统计报告与验证NumPy 统计摘要应当可审计。记录数据形状、观测轴、dtype、缺失值策略、自由度、权重、分位数方法以及重采样或模拟使用的随机种子。使用恒等式、独立实现、图形和已知案例验证计算。检查项问题行动形状一个观测是什么哪个轴包含观测断言 shape 和 axis 约定dtype精度或整数溢出会影响结果吗选择 dtype 并检查尺度缺失NaN 或掩码代表什么明确掩码并报告数量自由度是总体还是样本估计显式设置 ddof权重为什么观测有不同权重记录权重定义和归一化异常值极端值是错误还是真实事件比较稳健和非稳健摘要不确定性估计有多大变异使用标准误或合适重采样可复现能否重新生成结果记录代码、版本和参数# 可复现摘要对象rng np.random.default_rng(2026)values rng.normal(loc100.0, scale12.0, size10_000)summary {n: int(values.size),mean: float(np.mean(values)),median: float(np.median(values)),std_ddof1: float(np.std(values, ddof1)),q05: float(np.quantile(values, 0.05)),q95: float(np.quantile(values, 0.95)),finite_count: int(np.isfinite(values).sum()),}print(summary)NumPy 统计最终检查表在计算统计量前定义观测单位、轴、单位和缺失值策略。结合均值、中位数、分位数、离散程度和图形理解分布形状。有意识地设置 ddof、权重、分位数方法和 dtype。把协方差和相关性视为描述性关联而不是因果关系。报告不确定性、样本量、稳健性选择和可复现细节。
阅读完成 · 觉得有帮助?
咨询建站