1. 求均值
import numpy as np
X=np.array([1,2,3,4,5,6])
np.mean(X)
2. 求标准差和方差
import numpy as np
X=np.array([1,2,3,4,5,6])
np.std(X) #标准差
np.var(X) #方差
3. 协方差矩阵
两个特征X,Y(都是向量)的协方差公式:
,
协方差具体的大小并不重要,但是它的正负是重要的。如果它的值是正的,这表明两个特征之间同时增加或减小;如果它的值是负的,这表明两个特征之间有一个增加而另一个减小。如果它的值为0,则表明两个特征之间是独立的。
如果有多个特征,可以计算协方差矩阵:
import numpy as np
T=np.array([9,15,25,14,10,18,0,16,5,19,16,20])
S=np.array([39,56,93,61,50,75,32,85,42,70,66,80])
T=T[:,np.newaxis]
S=S[:,np.newaxis]
X=np.hstack((T,S))
np.cov(X.T)
求出的协方差输出如下:
array([[ 47.71969697, 122.9469697 ],
[ 122.9469697 , 370.08333333]])
4. 计算特征值和特征向量
import numpy as np
cov_mat = np.cov(X_train_std.T)
eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)#特征值是eigen_vals,特征向量是eigen_vecs,
#特征向量是按列放的,即一列代表一个特征向量
PCA的原理,假如原始数据集X是N*M(N是样本数,M是特征数)先计算出协方差矩阵的特征值和特征向量(M维),然后挑出对应特征值最大的特征向量(2个)组成映射矩阵W(M*2),用X*W即可得到降维后的数据集(N*2)。