码迷,mamicode.com
首页 > 编程语言 > 详细

降维之pca算法

时间:2017-06-10 20:24:10      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:ges   img   logs   mat   均值   pre   特征   form   osi   

pca算法:

 算法原理: pca利用的两个维度之间的关系和协方差成正比,协方差为0时,表示这两个维度无关,如果协方差越大这表明两个维度之间相关性越大,因而降维的时候,

都是找协方差最大的。

  

1 将XX中的数据进行零均值化,即每一列都减去其均值。
2 计算协方差矩阵C=1mXTXC=1mXTX
3 求出CC的特征值和特征向量
4 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
5 Y=XPY=XP就是降维到k维后的数据。

代码:

# coding=utf-8
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris

data = load_iris()

y = data.target
X = data.data
print data.feature_names
print data.data;
pca = PCA(n_components=2)
reduced_X = pca.fit_transform(X)

red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []

for i in range(len(reduced_X)):
    if y[i] == 0:
        red_x.append(reduced_X[i][0])
        red_y.append(reduced_X[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_X[i][0])
        blue_y.append(reduced_X[i][1])
    else:
        green_x.append(reduced_X[i][0])
        green_y.append(reduced_X[i][1])

plt.scatter(red_x, red_y, c=r, marker=x)
plt.scatter(blue_x, blue_y, c=b, marker=D)
plt.scatter(green_x, green_y, c=g, marker=.)
plt.show()

技术分享

降维之pca算法

标签:ges   img   logs   mat   均值   pre   特征   form   osi   

原文地址:http://www.cnblogs.com/gongxijun/p/6947717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!