• sklearn中PCA的使用方法


    1. 函数原型及参数说明
    这里只挑几个比较重要的参数进行说明。
    sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

    n_components: int, float, None 或 string,PCA算法中所要保留的主成分个数,也即保留下来的特征个数,如果 n_components = 1,将把原始数据降到一维;如果赋值为string,如n_components='mle',将自动选取特征个数,使得满足所要求的方差百分比;如果没有赋值,默认为None,特征个数不会改变(特征数据本身会改变)。
     copy:True 或False,默认为True,即是否需要将原始训练数据复制。
     whiten:True 或False,默认为False,即是否白化,使得每个特征具有相同的方差。
    2. PCA对象的属性
    explained_variance_ratio_:返回所保留各个特征的方差百分比,如果n_components没有赋值,则所有特征都会返回一个数值且解释方差之和等于1。
     n_components_:返回所保留的特征个数。
    3.PCA常用方法
    fit(X): 用数据X来训练PCA模型。
     fit_transform(X):用X来训练PCA模型,同时返回降维后的数据。
     inverse_transform(newData) :将降维后的数据转换成原始数据,但可能不会完全一样,会有些许差别。
     transform(X):将数据X转换成降维后的数据,当模型训练好后,对于新输入的数据,也可以用transform方法来降维。
     
     
    以下是python实例:
    import numpy as np,matplotlib.pyplot as plt
    from sklearn.decomposition import PCA
    import sklearn.datasets as dts
    # 加载乳腺癌数据集
    canner = dts.load_wine()
    x = canner.data
    y = canner.target
    # 建模
    plt.scatter(x[y==0,0],x[y==0,1],c='r',label=canner.target_names[0])
    plt.scatter(x[y==1,0],x[y==1,1],c='b',label=canner.target_names[1])
    plt.legend()
    plt.show()

    model = PCA(n_components=2)
    z = model.fit_transform(x) # 训练并降维

    # 组件
    print('特征向量:',model.components_)
    # 解释方差
    print('解释方差:',model.explained_variance_)
    # 解释方差比
    print('方差解释比',model.explained_variance_ratio_)

    # 画降维后的 0-1 分布图
    plt.scatter(z[:,0],z[:,1],c=y,cmap=plt.cm.Paired)
    # 显示图例 看着更清晰
    plt.scatter(z[y==0,0],z[y==0,1],c='r',label=canner.target_names[0])
    plt.scatter(z[y==1,0],z[y==1,1],c='b',label=canner.target_names[1])
    plt.legend()
    plt.show()

    # 数据重建 还原特征
    xnew = model.inverse_transform(z)
     
  • 相关阅读:
    学习asp.net比较完整的流程
    [图像思考法]我用图像故事法来理解与记忆冒泡排序
    MVC4与JSON交互的知识总结
    vulhub漏洞环境库内容整理
    kaliapt update时报The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6解决方案
    sqlilabs靶机测试笔记
    Lord_Of_The_Root1.0.1靶机测试笔记
    utf16的单引号乱码,用于post型宽字节注入
    ubuntu16.04报错AttributeError: module 'platform' has no attribute 'linux_distribution'
    一文搞定OSCP的缓冲区溢出
  • 原文地址:https://www.cnblogs.com/wei-520/p/12470843.html
Copyright © 2020-2023  润新知