数据挖掘-Datawhale学习笔记-02-特征工程

    学习题目:天池-二手车价格预测
    https://tianchi.aliyun.com/competition/entrance/231784/information
    数据挖掘-特征工程
    https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.12.1cd81b438QtUxo&postId=95501

常见的特征工程包括:
1.异常处理:
通过箱线图(或 3-Sigma)分析删除异常值;
BOX-COX 转换(处理有偏分布);
长尾截断;

2.特征归一化/标准化:
标准化(转换为标准正态分布);
归一化(抓换到 [0,1] 区间);
针对幂律分布,可以采用公式: log(1+x1+median)log(1+x1+median)

3.数据分桶:
等频分桶;
等距分桶;
Best-KS 分桶(类似利用基尼指数进行二分类);
卡方分桶;

4.缺失值处理:
不处理(针对类似 XGBoost 等树模型);
删除(缺失数据太多);
插值补全,包括均值/中位数/众数/建模预测/多重插补/压缩感知补全/矩阵补全等;
分箱,缺失值一个箱;

5.特征构造:
构造统计量特征,报告计数、求和、比例、标准差等;
时间特征,包括相对时间和绝对时间,节假日,双休日等;
地理信息,包括分箱,分布编码等方法;
非线性变换,包括 log/ 平方/ 根号等;
特征组合,特征交叉;
仁者见仁,智者见智。

6.特征筛选
过滤式(filter):先对数据进行特征选择,然后在训练学习器,常见的方法有 Relief/方差选择发/相关系数法/卡方检验法/互信息法;
包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则,常见方法有 LVM(Las Vegas Wrapper) ;
嵌入式(embedding):结合过滤式和包裹式,学习器训练过程中自动进行了特征选择,常见的有 lasso 回归;

7.降维
PCA/ LDA/ ICA;
特征选择也是一种降维。

箱型图去除异常值,可以直接调用

def box_plot_outliers(data_ser, box_scale):
    """
    利用箱线图去除异常值
    :param data_ser: 接收 pandas.series 数据格式
    :param box_scale: 箱线图尺度,
    :return:
    """
    iqr = box_scale * (data_ser.quantile(0.75) - data_ser.quantile(0.25))
     val_low = data_ser.quantile(0.25) - iqr
    val_up = data_ser.quantile(0.75) + iqr
    rule_low = (data_ser < val_low)
    rule_up = (data_ser > val_up)
    return (rule_low, rule_up), (val_low, val_up)

对于长尾分布或者左偏分布。可以使用log变换

data["price"]=np.log1p(data["price"])

##如果是对于预测值进行变换,最后需要还原
data["price"]= np.e**(data["price"])-1

多项式特征构建

##多项式特征构建
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
data=np.arange(6).reshape(3,2)

poly = PolynomialFeatures(2) 
poly.fit_transform(X) 
#interaction_only=True时,则只选取特征间的交互项,
#x1^2就不会被生成
poly = PolynomialFeatures(degree=3, interaction_only=True)
poly.fit_transform(X) 

参考:https://blog.csdn.net/levy_cui/article/details/100557454

特征筛选:
参考:https://blog.csdn.net/qq_33876194/article/details/88403394

#补充
对于文本式类别变量,如果因为他出现的变量比较多dummy不好处理,。所以Pandas有一个方法叫做factorize(),它可以创建一些数字,来表示类别变量,对每一个类别映射一个ID,这种映射最后只生成一个特征,不像dummy那样生成多个特征。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值