zoukankan      html  css  js  c++  java
  • 《特征工程三部曲》之三:维度压缩

    当特征选择完成之后,就可以直接训练模型了,但是可能由于特征矩阵过大导致计算量大,训练时间长的问题;因此,降低特征矩阵维度,也是必不可少的,主成分分析就是最常用的降维方法,在减少数据集的维度的同时,保持对方差贡献最大的特征,在sklearn中,我们使用PCA类进行主成分分析。

    • 主成分分析(Principal Components Analysis)

    • PCA API

      • 有一个参数用于设置主成分的个数:pca_3=PCA(n_components=3),设置好参数后,就可以生成PCA的对象了
      • 接着我们可以调用fit_transform方法对高维数据进行压缩:data_pca_3=pca3.fit_transform(data)

    我们人类能看到的数据是三维数据,那么怎样把四维数据压缩到三维数据呢?

    #导入iris特征数据到data变量中
    import pandas
    from sklearn import datasets
    import matplotlib.pyplot as plt
    from sklearn.decomposition import PCA
    from mpl_toolkits.mplot3d import Axes3D
    
    iris =datasets.load_iris()
    
    data = iris.data
    
    #分类变量到target变量中
    target = iris.target
    
    #使用主成分分析,将四维数据压缩为三维
    pca_3 = PCA(n_components=3)
    data_pca_3 = pca_3.fit_transform(data)
    
    #绘图
    colors={0:'r',1:'b',2:'k'}
    markers={0:'x',1:'D',2:'o'}
    
    #弹出图形
    #%matplotlib qt
    
    #三维数据
    fig = plt.figure(1,figsize=(8,6))
    ax = Axes3D(fig,elev=-150,azim=110)
    
    data_pca_gb = pandas.DataFrame(
        data_pca_3
    ).groupby(target)
    
    for g in data_pca_gb.groups:
        ax.scatter(
            data_pca_gb.get_group(g)[0],
            data_pca_gb.get_group(g)[1],
            data_pca_gb.get_group(g)[2],
            c=colors[g],
            marker=markers[g],
            cmap=plt.cm.Paired
        )
    plt.show()

    生成的效果图如下:
    @数据分析-jacky

  • 相关阅读:
    POJ 1637:Sightseeing tour
    bzoj 3997: [TJOI2015]组合数学
    [CEOI2008]order
    【网络流24题】星际转移问题
    Codeforces Round #460 D. Karen and Cards
    bzoj 3142: [Hnoi2013]数列
    codeforces586B
    codeforces631B
    codeforces548B
    codeforces515B
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/7786578.html
Copyright © 2011-2022 走看看