例题来源于:
http://blog.csdn.net/zhongkelee/article/details/44064401
import numpy as np
import matplotlib.pyplot as plt
x = np.array([2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1])
y = np.array([2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9])
x_avg = np.average(x)
y_avg = np.average(y)
x_adjust = x - x_avg
y_adjust = y - y_avg
H=np.vstack((x_adjust,y_adjust))
# x和y的平均值,然后对于所有的样例,都减去对应的均值。
H_T=np.transpose(H)
# 转置
cov=np.cov(x_adjust,y_adjust)
# 特征协方差矩阵, 对角线上分别是x和y的方差,非对角线上是协方差。
# 协方差是衡量两个变量同时变化的变化程度。
eigen_vals, eigen_vecs = np.linalg.eig(X)
#特征值是eigen_vals,特征向量是eigen_vecs
index = np.argsort(eigen_vals)
#将特征值按从大到小排序,输出原来的下标
a = np.max(index)
vec=eigen_vecs[:,a]
# vec为最大的特征值对应的特征向量
FinalData = np.dot(H_T,vec)
print(FinalData)
fig1=plt.figure()#创建一个绘图对象
plt.title("PCA") #图像标题
plt.scatter(FinalData,y)
plt.show()
[-0.82797019 1.77758033 -0.99219749 -0.27421042 -1.67580142 -0.9129491 0.09910944 1.14457216 0.43804614 1.22382056]



