【python讲线代】S03E12 谈谈数据分布的度量

1.期望与方差

看到这个标题,读者也许会想,这里不是在讲线性代数么,怎么感觉像是误入了概率统计的课堂?

这里我专门说明一下,在这一章节里,我们的最终目标是分析如何提取数据的主成分,如何对手头的数据进行降维,以便后续的进一步分析。往往问题的切入点就是数据各个维度之间的关系以及数据的整体分布。因此,我们有必要花上一节课的功夫,来梳理一下如何对数据的整体分布情况进行描述。

首先大家知道,期望衡量的是一组变量 $X$ 取值分布的平均值,我们一般记作:$E[X]$,反映的是不同数据集的整体水平。比如,在一次期末考试中,一班的平均成绩是 $90$ 分,二班的平均成绩是 $85$ 分,那么从这两个班级成绩的均值来看,就反映出一班的成绩在总体上要优于二班。

方差这个概念大家也不陌生,方差的定义是 $V[X]=E[(X-\mu)^2]$,其中,$\mu=E[X]$,他反映的是一组数据的离散程度。通俗的说就是:对于一组数据,其方差越大,数据的分布就越发散,方差越小,数据的分布就越集中。在一组样本集的方差计算中,我们采用 $\frac{1}{n-1}\sum_{1}^{n}{(x_i-\mu)^2}$ 作为样本 $X$ 的方差估计。

这里有一组数据,他描述了10名同学的考试成绩,第一列是英语成绩,第二列是数学成绩,第三列是物理成绩,我们将数据文件保存在E盘上,数据文件的截图如图6.1所示:

图6.1.考试成绩数据表

图6.1.考试成绩数据表

我们来求解一下这三门成绩的均值和方差:

代码片段:

import numpy as np

eng, mat, phy = np.loadtxt('e:\\score.csv', delimiter=',',
                           usecols=(0, 1, 2), unpack=True)

print(eng.mean(), mat.mean(), phy.mean())
print(np.cov(eng), np.cov(mat), np.cov(phy))

运行结果:

79.1 80.6 80.1
54.98888888888888 188.04444444444442 181.87777777777777

从运行结果中我们可以看出这10名同学的英语、数学、物理三门功课的成绩所体现出的一些特征。三门课的平均值都差不多,但是方差值相差非常大,英语成绩的方差要明显小于数学和物理成绩的方差,这恰恰说明了这10名同学的英语成绩的分布相对而言要集中一些,换句话说就是大家的成绩相差不大,而另外两门理科的分数分布的则要更加分散,成绩差距相对更大。

2.协方差与协方差矩阵

top Created with Sketch.