zoukankan      html  css  js  c++  java
  • 降维之pca算法

    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()

  • 相关阅读:
    hdu 2604 Queuing(矩阵快速幂乘法)
    hdu 5591 ZYB's Game
    hdu 5590 ZYB's Biology
    CodeForces
    uva 193 Graph Coloring(图染色 dfs回溯)
    uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)
    CSU
    hdu 5115 Dire Wolf(区间dp)
    腾讯装扮下拉选项卡特效(QQ空间)
    楼梯式定位导航系统
  • 原文地址:https://www.cnblogs.com/gongxijun/p/6947717.html
Copyright © 2011-2022 走看看