• 技术文章 >Python技术 >Python基础教程

    python中Box-Cox变换是什么

    小妮浅浅小妮浅浅2021-06-09 11:35:38原创134

    1、概念

    Box-Cox变换是统计建模中常用的建模方法,主要用于连续响应变量不满足正态分布时,可采用Box-Cox变换,使线性回归模型在满足线性、正态性、独立性和方差的同时不丢失信息。在Box-Cox转换之前,有必要将数据归一化。

    2、实例

    #我们这里是对训练集和测试集一起归一化,也可以分开进行归一化,(分开)这种方式需要建立训练数据和测试数据分布一直的情况下,建议在数据量大的情况下使用。
    # 绘图显示Box-Cox变换对数据分布影响
    cols_numeric_left = cols_numeric[0:13]
    cols_numeric_right = cols_numeric[13:] #这里是将特征分为两部分,前13个为第一部分
    ## Check effect of Box-Cox transforms on distributions of continuous variables
     
    train_data_process = pd.concat([train_data_process, train_data['target']], axis=1)
     
    fcols = 6
    frows = len(cols_numeric_left)
    plt.figure(figsize=(4*fcols,4*frows))
    i=0
    for var in cols_numeric_left:
        dat = train_data_process[[var, 'target']].dropna()
            
        i+=1
        plt.subplot(frows,fcols,i)
        sns.distplot(dat[var] , fit=stats.norm);
        plt.title(var+' Original')
        plt.xlabel('')
            
        i+=1
        plt.subplot(frows,fcols,i)
        _=stats.probplot(dat[var], plot=plt)
        plt.title('skew='+'{:.4f}'.format(stats.skew(dat[var]))) #计算数据集的偏度
        plt.xlabel('')
        plt.ylabel('')
            
        i+=1
        plt.subplot(frows,fcols,i)
        plt.plot(dat[var],dat['target'],'.',alpha=0.5)
        plt.title('corr='+'{:.2f}'.format(np.corrcoef(dat[var],dat['target'])[0][1]))
     
        i+=1
        plt.subplot(frows,fcols,i)
        trans_var, lambda_var = stats.boxcox(dat[var].dropna()+1)
        trans_var = scale_data(trans_var)    
        sns.distplot(trans_var , fit=stats.norm);
        plt.title(var+' Tramsformed')
        plt.xlabel('')
            
        i+=1
        plt.subplot(frows,fcols,i)
        _=stats.probplot(trans_var, plot=plt)
        plt.title('skew='+'{:.4f}'.format(stats.skew(trans_var))) #归一化后,偏度明显变小,相关性变化不大
        plt.xlabel('')
        plt.ylabel('')
            
        i+=1
        plt.subplot(frows,fcols,i)
        plt.plot(trans_var, dat['target'],'.',alpha=0.5)
        plt.title('corr='+'{:.2f}'.format(np.corrcoef(trans_var,dat['target'])[0][1]))

    以上就是python中Box-Cox变换的介绍,希望对大家有所帮助。更多Python学习指路:python基础教程

    专题推荐:python box-cox变换
    上一篇:python缺失值的解决方法 下一篇:python中fail函数如何使用

    相关文章推荐

    • Python中concurrent.futures模块如何使用• Python kmeans聚类的使用• Python K-means算法的计算步骤• Python默认值的使用注意• Python特殊传参如何实现• python中的两种输出语句• python循环语句的两种类型• python继承的多种类型• python merge()的连接• python join()合并DataFrame的操作• python concat方法的作用• python Unittest的组成• python中单向通信TCP服务器的搭建• python中客户端通信的实现流程• python列表元素的获取和查看• python列表新增元素的三种形式• python列表清除元素的四种方式• python元组有哪些获取元素的方法• python字符的获取方式• python处理字符串的常见方法• python字符串的多行输出• python序列的常用操作• python for循环的本质探究• python使用send启动生成器• python中Harris角点检测
    品易云

    全部评论我要评论

  • 取消发布评论发送
  • 

    Python学习网