zoukankan      html  css  js  c++  java
  • 可视化库-Matplotlib-Pandas与sklearn结合(第四天)

    1. 计算每一种的比例的百分比

    import pandas as pd
    from matplotlib.ticker import FuncFormatter
    
    
    np.random.seed(0)
    df = pd.DataFrame({'Condition 1':np.random.rand(20),
                       'Condition 2':np.random.rand(20)*0.9,
                       'Condtion 3':np.random.rand(20)*1.1})
    
    print(df.head())
    
    fig, ax = plt.subplots()
    # stacked 进行堆叠操作
    df.plot.bar(ax=ax, stacked=True)
    plt.show()
    
    # 设置百分比
    df_ratio = df.div(df.sum(axis=1), axis=0)
    fig, ax = plt.subplots()
    df_ratio.plot.bar(ax=ax, stacked=True)
    ax.yaxis.set_major_formatter(FuncFormatter(lambda y,_:'{:.0%}'.format(y)))
    plt.show()

    2. 通过pd将数据导入,进行缺失值补充,画出特征的PCA图

    # 1 下载数据
    url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00383/risk_factors_cervical_cancer.csv'
    df = pd.read_csv(url, na_values='?')
    print(df.head())
    # 2.对缺失值进行补充
    from sklearn.preprocessing import Imputer
    # 引入inputer() 使用均值对缺失值进行填充
    impute = pd.DataFrame(Imputer().fit_transform(df))
    print(impute.head())
    impute.columns = df.columns
    impute.index = df.index
    
    
    import seaborn as sns
    from sklearn.decomposition import  PCA
    from mpl_toolkits.mplot3d import Axes3D
    
    # 3.取出样品特征, 取出Dx:Cancer 
    features = impute.drop('Dx:Cancer', axis=1)
    y = impute['Dx:Cancer']
    # 4进行PCA操作
    pca = PCA(n_components=3)
    X_r = pca.fit_transform(features)
    # '{:.2%}'表示保留两位小数, pca.explained_variabce_ratio表示所占的比例
    print('Explained variance:
    PC1{:.2%}
    PC2{:.2%}
    PC3{:.2%}'
        .format(pca.explained_variance_ratio_[0],
                pca.explained_variance_ratio_[1],
                pca.explained_variance_ratio_[2],))
    # 构造三维坐标系
    fig = plt.figure()
    ax = Axes3D(fig)
    # 画散点图
    ax.scatter(X_r[:, 0], X_r[:, 1], X_r[:, 2], c='r', cmap=plt.cm.coolwarm)
    # 对三个维度的坐标进行标注
    ax.set_xlabel('PC1')
    ax.set_ylabel('PC2')
    ax.set_zlabel('PC3')
    
    plt.show()

  • 相关阅读:
    duilib框架分析:几个回调(C++11)
    duilib框架分析(一)概述
    图解JVM--(二)垃圾回收
    图解jvm--(一)jvm内存结构
    4 (计算机网络) DHCP与PXE:IP是怎么来的,又是怎么没的?
    3(计算机网络)ifconfig:最熟悉又陌生的命令行
    2 (计算机网络)理解网络协议的工作模式
    1 (计算机网络)我们常用的网络协议有哪些?
    阿里云配置mysql
    深入Spring Boot:那些注入不了的Spring占位符(${}表达式)
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10240187.html
Copyright © 2011-2022 走看看