zoukankan      html  css  js  c++  java
  • 特征变量和y值的可视化

    一、标签为数值变量

    一般常见于回归相关的问题。

    1.1类别变量+数值标签

    关于类别变量与数值标签的关系,我们一般会观察下面的结果。

    1. 每个类别情况下对应的均值,这个可以直接使用pandas进行绘制;
    2. 均值反映的信息并不十分详细,如果希望得到更加具体的分布,可以使用boxplot进行绘制。

    如果不同类别之间的标签分布相差较大,则说明该类别信息是非常有有价值的,如果所有类别的标签都是一样的分布,则该类别信息的区分度相对较低。

    数据链接 https://tianchi.aliyun.com/competition/entrance/231784/information,可以看我另一篇文章:https://www.cnblogs.com/cgmcoding/p/13279789.html

     

    1. pandas直接绘图

    手动挡和自动挡的价格分布

    #%%导入模块
    import pandas as pd 
    import numpy as np
    from scipy import stats
    import seaborn as sns
    import matplotlib.pyplot as plt
    %matplotlib inline
    plt.rc("font",family="SimHei",size="12")  #解决中文无法显示的问题
    import pycard as pc
    
    #波士顿房价数据集
    df = pd.read_csv('D:/迅雷下载/used_car_train_20200313.csv',sep=' ')
    
    
    var   = 'gearbox'
    label = 'price'
    df.groupby(var)[label].mean().plot(kind = 'bar')

     2. boxplot绘图

    plt.figure(figsize=[10,6])
    sns.boxplot(x=var, y=label, data=df)

     但是当该特征的类别特别多的时候,不建议画图

     

    1.2数值变量+数值标签

    关于数值变量与数值标签的关系,我们一般会观察下面的结果。

    • 数值特征与数值标签的pearson相关系数;如果该数值的绝对值越大,往往说明该特征能为模型带来非常大的帮助。
    • 观察数值特征与数值标签的时候,一般采用散点图即可,也可以使用regplot绘制出拟合的曲线。

    1. person相关系数

    df[['v_0',label]].corr('pearson')

     2. scatter绘图

    plt.scatter(x='v_0', y = label, data = df);
    plt.xlabel('v_0')
    plt.ylabel(label)

     3. regplot绘图

    sns.regplot(x=df['v_0'] , y=df[label])

    1.3 时间变量+数值标签

    关于时间与数值标签,我们主要希望随着时间变化,数据是否表现除了某些特殊的模式(周期性等),以及是否出现了明显的异常现象等等。时间变量与数值变量的可视化直接使用plot函数即可。

    1. plot绘图

    df['creatDate'] = pd.to_datetime(df['creatDate'], format='%Y%m%d', errors='coerce')
                               
    plt.plot(df.creatDate, df[label].values, color='black', linestyle='--', linewidth='1', label=label)
    
    plt.xlabel('creatDate', fontsize=14)   
    plt.ylabel(label, fontsize=16)     

    二、标签为二元变量

    一般常见于二分类问题。

    2.1 类别变量+二元标签

    关于类别变量与二元标签的关系可以直接通过barplot函数进行可视化,如果不同类之间的分布差不大,那说明该类别变量大概率是意义不大的。

    df = pd.read_csv('E:/谷歌下载/seaborn-data-master/titanic.csv')
    var    = 'pclass'
    label  = 'survived'
    df.groupby(var)[label].mean()
    '''
    pclass
    1    0.629630
    2    0.472826
    3    0.242363
    Name: survived, dtype: float64
    '''

    画图

    sns.barplot(x=var,  y=label , data=df)

    2.2 数值变量+二元标签

    数值变量与二元标签的关系一般可以通过下面的两种方式分析:

    • 对数值变量进行分桶,然后基于类别变量与二元标签的关系进行分析;
    • 使用boxplot函数,观测在不同标签下,数值特征的分布差异。
    sns.boxplot(df[label], df['fare'])

    2.3标签为N(>2)元类别变量

    也就是我们常说的多分类问题。在观测标签为多分类的问题时,因为标签是多个类别的,我们可以通过两种策略对其进行观察。

    • 将多分类转化为多个二分类然后进行观测,这么做最大的问题是我们需要分析量大大增加了,会使得问题变得更加繁琐;
    • 采用和数值变量+二元标签的策略对模型进行观测。
    '''
        随机模拟产出多分类标签
    '''
    multi_label = 'y_generated'
    df['y_generated'] = np.random.randint(low =0.5, high = 3.5, size = df.shape[0])

    3.1 类别变量+N标签

    直接使用countplot,将hue的位置设置为标签的名称即可。

    sns.countplot(x='pclass', hue=multi_label, data=df)
    plt.ylabel('Number of Occurrences', fontsize=12)
    plt.xlabel(multi_label, fontsize=12)
    plt.show()

    3.2 数值变量+N元标签

    直接使用boxplot即可,观测在每个类处数值变量的分布情况。如果所有类处的数值变量分布都类似,那可能该数值变量带来的影响会相对较小,反之影响较大。

    sns.boxplot(x=multi_label, y='age', data=df)
    plt.ylabel('Age distribution', fontsize=12)
    plt.xlabel(multi_label, fontsize=12)
    plt.show()

     文章参考:https://mp.weixin.qq.com/s/yPhrYp7gL28W5H5GatmCXA,只做笔记,不做商业用途

  • 相关阅读:
    springboot项目下载文件功能中-切面-导致的下载文件失败的bug
    解决laydate动态设置初始值的问题
    简易MySQL存储过程
    css选择器(第n个类选择器)的坑
    session过期情况下ajax请求不会触发重新登录的问题
    session过期情况下ajax请求不会触发重新登录的问题
    springboot配置多数据源mongodb
    css平移动画的实现
    springboot中使用JOIN实现关联表查询
    解决springboot项目中@Value注解参数值为null的问题
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/14623153.html
Copyright © 2011-2022 走看看