美文网首页
无监督学习 - 降维 - PCA

无监督学习 - 降维 - PCA

作者: 闫_锋 | 来源:发表于2018-05-19 23:34 被阅读17次

    主成分分析 - PCA

    • PCA是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。

    • PCA可以把具有相关性的高维变量合成为线性无关的低维变量,成为主成分。主成分能够尽可能保留原始数据的信息。

    • 方差
      各个样本和样本均值的差的平方和的均值,用来度量一组数据的分散程度

    • 协方差
      用于度量两个变量之间的线性相关性程度,若两个变量的协方差为0,则可认为二者线性无关。

    • 协方差矩阵
      协方差矩阵则是由变量的协方差值构成的矩阵(对称阵)。

    • 特征向量和特征值
      矩阵的特征向量是描述数据集结构的非零向量并满足如下公式:
      A v = lambda v

    原理:
    矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。

    PCA.png
    sklearn.decomposition.PCA
    #n_components: 指定主成分的个数,即降维后数据的维度。
    #svd_solver: 设置特征值分解的方法,默认为'auto', 其他可选有'full', 'arpack', 'randomized'
    

    PCA实现高维数据可视化
    目标:
    已知鸢尾花数据是4维的,共三类样本。使用PCA实现对鸢尾花数据进行降维,实现在二维平面上的可视化。

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

          本文链接:https://www.haomeiwen.com/subject/kcvadftx.html