PCA主成分分析
目的:找出向量W,得到线性可分的边界ZZ=W.T*X
步骤:
w有两种求法
一个是特征值分解
一个是奇异值分解
代码部分最开始简单的计算结果有有这种小数,就查了一下,原因是二进制的问题
https://blog.youkuaiyun.com/weixin_44352981/article/details/111347026.最后还是靠round四舍五入了,只能保留的位数多写几位。
问题2:列表和矩阵的相互转换。np.mat(list)和mat.tolist()函数。
import numpy as np
from numpy.linalg import eig
x=[[4,8],[3.6,7.6],[4.4,8.4],
[3.2,7.2],[4.8,8.8],[2.8,6.8]]
x1=0
x2=0
for i in range(len(x)):
x1 +=x [i][0]
x2 +=x [i][1]
ex1=round(x1/len(x),5)
ex2=round(x2/len(x),5)
x_=[]
for i in range(len(x)):
a=[round(x[i][0]-ex1,5),round(x[i][1]-ex2,5)]
x_.append(a)
x_=np.mat(x_)
xtx=np.dot(x_.T,x_)
#对xtx进行特征值分解,得到特征向量
vals,vecs = eig(xtx)
wt=vecs.T