今日锦囊

特征锦囊:怎么尽可能地修正数据倾斜的特征?

上一个锦囊,分享了给大家通过skew的方法来找到数据集中有数据倾斜的特征(特征锦囊:怎么找出数据集中有数据倾斜的特征?),那么怎么去修正它呢?正是今天要分享给大家的锦囊!

还是用到房价预测的数据集:


下载地址:https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

import pandas as pd
import numpy as np
# Plots
import seaborn as sns
import matplotlib.pyplot as plt# 读取数据集
train = pd.read_csv('./data/house-prices-advanced-regression-techniques/train.csv')
train.head()


我们通过上次的知识,知道了可以通过skewness来进行倾斜特征的辨别,那么对于修正它的办法,这里也先分享一个理论知识 —— box-cox转换

线性回归模型满足线性性、独立性、方差齐性以及正态性的同时,又不丢失信息,此种变换称之为Box—Cox变换。

Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据变换形式,Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的。—— 百度百科

在使用前,我们先看看原先倾斜的特征有多少个。

# 丢弃y值
all_features = train.drop(['SalePrice'], axis=1)# 找出所有的数值型变量
numeric_dtypes = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
numeric = []
for i in all_features.columns:if all_features[i].dtype in numeric_dtypes:numeric.append(i)# 找出明显偏态的数值型变量
skew_features = all_features[numeric].apply(lambda x: skew(x)).sort_values(ascending=False)high_skew = skew_features[skew_features > 0.5]
skew_index = high_skew.indexprint("本数据集中有 {} 个数值型变量的 Skew > 0.5 :".format(high_skew.shape[0]))
skewness = pd.DataFrame({'Skew' :high_skew})
skew_features

本数据集中有 24 个数值型变量的 Skew > 0.5 :

在Python中怎么使用Box-Cox 转换呢?很简单。

# 通过 Box-Cox 转换,从而把倾斜的数据进行修正
for i in skew_index:all_features[i] = boxcox1p(all_features[i], boxcox_normmax(all_features[i] + 1))

然后我们再看看还有多少个数据倾斜的特征吧!

# 找出明显偏态的数值型变量
skew_features = all_features[numeric].apply(lambda x: skew(x)).sort_values(ascending=False)high_skew = skew_features[skew_features > 0.5]
skew_index = high_skew.index
print("本数据集中有 {} 个数值型变量的 Skew > 0.5 :".format(high_skew.shape[0]))
skewness = pd.DataFrame({'Skew' :high_skew})

本数据集中有 15 个数值型变量的 Skew > 0.5 :

变少了很多,而且如果看他们的skew值,也会发现变小了很多。我们也可以看看转换后的箱体图情况。

# Let's make sure we handled all the skewed values
sns.set_style("white")
f, ax = plt.subplots(figsize=(8, 7))
ax.set_xscale("log")
ax = sns.boxplot(data=all_features[skew_index] , orient="h", palette="Set1")
ax.xaxis.grid(False)
ax.set(ylabel="Feature names")
ax.set(xlabel="Numeric values")
ax.set(title="Numeric Distribution of Features")
sns.despine(trim=True, left=True)


好了,今天的分享就到这里吧,大家有什么要讨论的可以留言哦!

往 期 锦 囊

特征锦囊:特征无量纲化的常见操作方法

特征锦囊:怎么进行多项式or对数的数据变换?

特征锦囊:常用的统计图在Python里怎么画?

特征锦囊:怎么去除DataFrame里的缺失值?

特征锦囊:怎么把被错误填充的缺失值还原?

特征锦囊:怎么定义一个方法去填充分类变量的空值?

特征锦囊:怎么定义一个方法去填充数值变量的空值?

特征锦囊:怎么把几个图表一起在同一张图上显示?

特征锦囊:怎么把画出堆积图来看占比关系?

特征锦囊:怎么对满足某种条件的变量修改其变量值?

特征锦囊:怎么通过正则提取字符串里的指定内容?

特征锦囊:如何利用字典批量修改变量值?

特征锦囊:如何对类别变量进行独热编码?

特征锦囊:如何把“年龄”字段按照我们的阈值分段?

特征锦囊:如何使用sklearn的多项式来衍生更多的变量?

特征锦囊:如何根据变量相关性画出热力图?

特征锦囊:如何把分布修正为类正态分布?

特征锦囊:怎么找出数据集中有数据倾斜的特征?

原创不易,如果觉得这种学习方式有用,希望可以帮忙随手转发or点下“在看”,这是对我的极大鼓励!阿里嘎多!????

特征锦囊:怎么尽可能地修正数据倾斜的特征?相关推荐

  1. 特征锦囊:怎么找出数据集中有数据倾斜的特征?

    今日锦囊 特征锦囊:怎么找出数据集中有数据倾斜的特征? 今天我们用的是一个新的数据集,也是在kaggle上的一个比赛,大家可以先去下载一下: 下载地址:https://www.kaggle.com/c ...

  2. linux中python如何调用matlab的数据_特征锦囊:如何在Python中处理不平衡数据

    今日锦囊 特征锦囊:如何在Python中处理不平衡数据 ? Index 1.到底什么是不平衡数据 2.处理不平衡数据的理论方法 3.Python里有什么包可以处理不平衡样本 4.Python中具体如何 ...

  3. 大数据之数据倾斜剖析

    1.1 绪论 数据倾斜是大数据领域绕不开的拦路虎,当你所需处理的数据量到达了上亿甚至是千亿条的时候,数据倾斜将是横在你面前一道巨大的坎. 迈的过去,将会海阔天空!迈不过去,就要做好准备:很可能有几周甚 ...

  4. 【Spark2运算效率】第四节 影响生产集群运算效率的原因之数据倾斜

    [Spark2运算效率][Spark2运算效率]第四节 影响生产集群运算效率的原因之数据倾斜 前言 倾斜实例 治理过程 结语 跳转 前言 当ETL调度任务所能拥有的资源能够满足其在较为资源冗余的状况下 ...

  5. sklearn 神经网络_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  6. sklearn中eof报错_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  7. 大数据时代时代舍恩伯格书资源_大数据时代的特征和思维

    随着信息技术的发展和应用, 人类进入了一个大数据时代.大数据时代和我们以前的时代有什么不同?什么又是大数据时代的特征,和应具备的思维呢? 维克多·舍恩伯格在<大数据时代>一书中将大数据时代 ...

  8. sklearn实战-----3.数据预处理和特征工程

    1 概述 1.1 数据预处理与特征工程 想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了.某一天 你从你的同事,一位药物研究人员那里,得到了一份病人临床表现 ...

  9. pandas用众数填充缺失值_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...

最新文章

  1. iclr 2020 | Geom-GCN:几何图神经网络
  2. TypeScript 里 class 和 method 的 abstract 修饰符
  3. php mysql数据备份命令_MySQL数据备份与恢复的相关操作命令
  4. oracle错误27101,ORA-27101ORA-01034错误解决
  5. 【剑指offer】面试题32:从上到下打印二叉树(java)
  6. C语言 sizeof 函数 - C语言零基础入门教程
  7. 平凡的世界电子书pdf下载_零基础彩铅画入门教程步骤图及全套PDF电子书教程下载!...
  8. 2021,新手初学写作的几个温馨建议
  9. 问题六十三:怎么用ray tracing画sphere sweeping图形
  10. 素数II题解(素数筛)
  11. 中国互联网发展报告2018年度总结
  12. 计算机体系结构-第五章-指令级并行
  13. 21条黄金法则,全面提升你的领导力
  14. Android开发丶基于高德地图实现定位、搜索定位、绘制圆圈自定义图标及改变圆圈半径等功能
  15. centos8 手动修改网络配置以及怎么重启网络,添加开机自启动
  16. 二维码生成与解析代码实现
  17. verilog中的initial语句
  18. 黄章出山的730天:牢牢掌控魅族,绝不放权!
  19. Mac 使用Jad 反编译class文件
  20. 黑苹果引导器Clover下载汇总(update to r5120)

热门文章

  1. 用c语言如何制作抖动窗口,C语言实现自动给QQ好友发窗口抖动
  2. 猿创征文|HCIE-Security Day60:邮件过滤技术
  3. 电容麦克风测试软件,Precision sound
  4. 数据库—应用系统开发方法
  5. 树莓派3安装win10arm 系统
  6. IOS AutoFill Extension 使用
  7. gioneem5Android版本,金立M5 Plus(金立GN8001) 版本线刷包
  8. 最新IP地理数据库(dat文件) --别花钱了
  9. WAF是什么东西?!--- 1 waf的功能和用到的技术原理介绍
  10. 基于Filament引擎的Animoji效果实现