特征锦囊:怎么尽可能地修正数据倾斜的特征?
今日锦囊
特征锦囊:怎么尽可能地修正数据倾斜的特征?
上一个锦囊,分享了给大家通过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()
![](/assets/blank.gif)
我们通过上次的知识,知道了可以通过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点下“在看”,这是对我的极大鼓励!阿里嘎多!????
特征锦囊:怎么尽可能地修正数据倾斜的特征?相关推荐
- 特征锦囊:怎么找出数据集中有数据倾斜的特征?
今日锦囊 特征锦囊:怎么找出数据集中有数据倾斜的特征? 今天我们用的是一个新的数据集,也是在kaggle上的一个比赛,大家可以先去下载一下: 下载地址:https://www.kaggle.com/c ...
- linux中python如何调用matlab的数据_特征锦囊:如何在Python中处理不平衡数据
今日锦囊 特征锦囊:如何在Python中处理不平衡数据 ? Index 1.到底什么是不平衡数据 2.处理不平衡数据的理论方法 3.Python里有什么包可以处理不平衡样本 4.Python中具体如何 ...
- 大数据之数据倾斜剖析
1.1 绪论 数据倾斜是大数据领域绕不开的拦路虎,当你所需处理的数据量到达了上亿甚至是千亿条的时候,数据倾斜将是横在你面前一道巨大的坎. 迈的过去,将会海阔天空!迈不过去,就要做好准备:很可能有几周甚 ...
- 【Spark2运算效率】第四节 影响生产集群运算效率的原因之数据倾斜
[Spark2运算效率][Spark2运算效率]第四节 影响生产集群运算效率的原因之数据倾斜 前言 倾斜实例 治理过程 结语 跳转 前言 当ETL调度任务所能拥有的资源能够满足其在较为资源冗余的状况下 ...
- sklearn 神经网络_sklearn中的数据预处理和特征工程
小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...
- sklearn中eof报错_sklearn中的数据预处理和特征工程
小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...
- 大数据时代时代舍恩伯格书资源_大数据时代的特征和思维
随着信息技术的发展和应用, 人类进入了一个大数据时代.大数据时代和我们以前的时代有什么不同?什么又是大数据时代的特征,和应具备的思维呢? 维克多·舍恩伯格在<大数据时代>一书中将大数据时代 ...
- sklearn实战-----3.数据预处理和特征工程
1 概述 1.1 数据预处理与特征工程 想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了.某一天 你从你的同事,一位药物研究人员那里,得到了一份病人临床表现 ...
- pandas用众数填充缺失值_sklearn中的数据预处理和特征工程
小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...
最新文章
- iclr 2020 | Geom-GCN:几何图神经网络
- TypeScript 里 class 和 method 的 abstract 修饰符
- php mysql数据备份命令_MySQL数据备份与恢复的相关操作命令
- oracle错误27101,ORA-27101ORA-01034错误解决
- 【剑指offer】面试题32:从上到下打印二叉树(java)
- C语言 sizeof 函数 - C语言零基础入门教程
- 平凡的世界电子书pdf下载_零基础彩铅画入门教程步骤图及全套PDF电子书教程下载!...
- 2021,新手初学写作的几个温馨建议
- 问题六十三:怎么用ray tracing画sphere sweeping图形
- 素数II题解(素数筛)
- 中国互联网发展报告2018年度总结
- 计算机体系结构-第五章-指令级并行
- 21条黄金法则,全面提升你的领导力
- Android开发丶基于高德地图实现定位、搜索定位、绘制圆圈自定义图标及改变圆圈半径等功能
- centos8 手动修改网络配置以及怎么重启网络,添加开机自启动
- 二维码生成与解析代码实现
- verilog中的initial语句
- 黄章出山的730天:牢牢掌控魅族,绝不放权!
- Mac 使用Jad 反编译class文件
- 黑苹果引导器Clover下载汇总(update to r5120)
热门文章
- 用c语言如何制作抖动窗口,C语言实现自动给QQ好友发窗口抖动
- 猿创征文|HCIE-Security Day60:邮件过滤技术
- 电容麦克风测试软件,Precision sound
- 数据库—应用系统开发方法
- 树莓派3安装win10arm 系统
- IOS AutoFill Extension 使用
- gioneem5Android版本,金立M5 Plus(金立GN8001) 版本线刷包
- 最新IP地理数据库(dat文件) --别花钱了
- WAF是什么东西?!--- 1 waf的功能和用到的技术原理介绍
- 基于Filament引擎的Animoji效果实现