这篇文章对PCA的算法分析的比较好:https://www.cnblogs.com/hadoop2015/p/7419087.html
看完以后我想尝试用iris数据集来实验一下,这里把记录下来:
步骤:
a. 对原始数据进行处理,每个数字减去这一列的平均值,还可以做归一化使得方差都差不多
b. 求协方差矩阵,取得数据间的方差区别,方差区别约大则认为较小一方是噪声,可以忽略
c. 对协方差矩阵求特征矩阵和特征值,选取前K个特征矩阵和特征值
d. 用前k个特征值对a步骤得到的数据进行将维处理,消除方差较小的噪声数据
- 原始数据
取了iris数据集里面的三类,一共9行数据
data = pd.read_csv("iris.csv")
data = np.mat(data)
- 分别求每列的平均值,并且用原始数据减去平均值
meanVals=np.mean(dataMat,axis=0)
meanRemoved=dataMat-meanVals
mean值:
[[5.58888889 3.03333333 3.46666667 1.15555556]]
得到结果:
[[-0.