• 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)
     
  • 相关阅读:
    正则表达式--验证中国手机号
    PostgreSQ数据库安全连接请求问题
    golang时间正反格式化
    Git 分支管理和冲突解决
    golang交叉编译
    ps命令
    Redis应用场景
    SecureCRT for Mac
    Redis作者谈Redis应用场景
    redis 五种数据的应用场景
  • 原文地址:https://www.cnblogs.com/wei-520/p/12470843.html
Copyright © 2020-2023  润新知