关于特征工程的那些事儿(一):初步的特征处理

1 篇文章 0 订阅
1 篇文章 0 订阅

首先,观察所拿到的raw data 有哪些形式的,这里包含如下几种形式:
1、连续型数据
2、离散型数据
3、文本型数据
4、图片型数据

一、处理连续型数据的方法总结:
1、最为简单的也是最常见的连续型数值的处理方式:标准化和缩放
      所谓的标准化和缩放主要是针对连续型数据本身的量纲不统一以及范围变化大所做出的一种数据处理方式,标准化的优点:1、提升模型的收敛速度;2、提升模型的精度
2、连续型数据转化为类别(离散型数据)的处理方式:1、分箱处理 2、利用哑变量 3、二值化
     这里需要先查看一下连续型数据的整体分布,分箱处理分为两种:1、自己设定的范围分箱;2、自适应分箱 (pd.qcut())
     个人在实践中认为可以将原本的一些str型数据看作是数值型,然后利用分箱操作对这些str型的编号类数据进行分类,从而避免使用聚类的方式来处理,很多时候聚类所消耗的时间过长
      利用哑变量:当编码的类别不多的时候,哑变量应该是一种很好的处理方式(one-hot编码),二值化是哑变量的一种特殊形式(好的一点是直接可以取前一位)
3、针对比例这样的数据处理方式(转化成了离散型数据):数据舍入
     先转化成int型的数据,然后取前两位或者一位,就把比例型数据转化成为了类别型数据
4、利用统计的方式进行:计数(类似于分箱)
     在一些连续型数据中,可能并不需要这个连续值本身的时候,我们可以利用计数的方式查看数值出现的次数,以此作为特征
5、针对时间型数据(连续性时间):1、计算持续时间、间隔时间 2、转化为离散值:hour:0-23;week:0-6;week/month of year
6、统计变换:  Log 变换和 Box-Cox 变换
     当应用于倾斜分布时 Log 变换是很有用的,因为他们倾向于拉伸那些落在较低的幅度范围内自变量值的范围,倾向于压缩或减少更高幅度范围内的自变量值的范围。说白了,就是可以让整个的数据变得平滑
(时间这一块的处理其实也是看情况的,我在做项目的时候发现,将年月处理成想要的分类型数据的时候,整个测试和训练精度都出现了大幅度的下降,个人觉得是因为那种距离感被削弱了,比如说一月到十月的距离和一月到二月的距离相等了,这样的话显然是不合适的。还有一些编码的处理,到现在也没有特别好的一些处理方式,反而直接那它们作为数值型数据,然后加上统计变换或者直接进行标准化来得更加实用,至少对于模型的整体精度不会差很多,特别是在用树形的相关算法时!)

二、离散型数据的处理方法:
1、特别是一些代码类的数据大多是离散型的,这里很多时候都是直接利用哑变量的处理方式,很少直接转化成连续型数据
    先用类别编码(LabelEncoder),由于类别编码存在着数字上的大小关系,然后再利用哑变量对类别编码进行区分( OneHotEncoder):  这里需要注意
利用 fit_transform(...)函数来解决训练集数据;而要对测试集数据进行相同的操作时候,需要利用 transform(...) 函数
    在遇到特别高维的数据时,记得使用 哈希编码 !!

第一次写,,下一篇是具体的代码展示~
文献:Practical Machin Learning with Python



        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值