特征工程常用于特征提取方法——数值特征

1 基本数值特征

本文以bilibili上的学习视频为笔记,代码原图

1.1 离散值处理

np.unique()看一下有多少类别
在这里插入图片描述

1.2 标签编码

LabelEncoder

将离散值映射为计算机可以识别的数据。例子是采用的LabelEncoder来实现,数值是从0开始。也可以自己手动写
在这里插入图片描述
在这里插入图片描述

one-hot Encoding

什么是one-hot编码,简单的说就是,假如有5个类别,“鸡,鸭,鹅,猫,狗”,转换为one-hot编码就是:
鸡-----“1,0,0,0,0”
鸭-----“0,1,0,0,0”
鹅-----“0,0,1,0,0”
猫-----“0,0,0,1,0”
狗-----“0,0,0,0,1”
from sklearn.preorocessing import OneHotEncoder
在这里插入图片描述

Get Dummy 构造哑变量

pandas.get_dummies()函数
get_dummies 前:
get_dummies 前

get_dummies 后:
get_dummies 后
此部分来源于:https://blog.csdn.net/maymay_/article/details/80198468
可以自动做成one-hot encoder格式
在这里插入图片描述
在进行编码前,可以用pd.describe()函数查看数据是否存在问题,然后再进行编码,在这里插入图片描述

二值特征

此部分标签要么为1,要么为0.如下午所示,通过listen_count计数,转化为二值特征就是watched,听过的大于等于1的标签就为1,没听过的就为0.
在这里插入图片描述
可用sklearn快捷转变二值特征
from sklearn.preprocessing import Binarizer
bn = Binarizer(threshold = 0.9)//表示大于0.9置为1
在这里插入图片描述

多项式特征

from sklearn.preprocessing import PolynomialFeatures
sklearn 的 PolynomialFeatures 的用法,这个类可以进行特征的构造,构造的方式就是特征与特征相乘(自己与自己,自己与其他人),这种方式叫做使用多项式的方式。
例如:有 a、b 两个特征,那么它的 2 次多项式的次数为 [ a , b , a 2 , a b , b 2 ] [a,b,a^2,ab,b^2] [a,b,a2,ab,b2]
PolyNomialFeatures有3个参数
degree:控制多项式的次数;
interaction_only:默认为 False,如果指定为 True,那么就不会有特征自己和自己结合的项,组合的特征中没有 a2 和 b2;
include_bias:默认为 True 。如果为 True 的话,那么结果中就会有 0 次幂项,即全为 1 这一列。
在这里插入图片描述

binning特征

也叫分箱,用于把连续特征划分为离散特征值。
sklearn.preprocessing.KBinsDiscretizer(n_bins=5, encode=’onehot’, strategy=’quantile’)
参数注释:

n_bins:分箱的数量,默认值是5,也可以是列表,指定各个特征的分箱数量,例如,[feature1_bins,feature2_bins,…]

encode:编码方式,{‘onehot’, ‘onehot-dense’, ‘ordinal’}, (default=’onehot’)
onehot:以onehot方式编码,返回稀疏矩阵
onehot-dense:以onehot方式编码,返回密集矩阵
ordinal:以ordinal方式编码,返回分箱的序号
strategy:定义分箱宽度的策略,{‘uniform’, ‘quantile’, ‘kmeans’}, (default=’quantile’)
uniform:每个分箱等宽
quantile:每个分箱中拥有相同数量的数据点
kmeans:每个箱中的值具有与1D k均值簇最近的中心

举个例子,对于以下二维数组,有三个特征,可以创建分箱数组,为每个维度指定分箱的数量:

from sklearn import preprocessing
X = np.array([[ -3., 5., 15 ],
[ 0., 6., 14 ],
[ 6., 3., 11 ]])
est = preprocessing.KBinsDiscretizer(n_bins=[3, 2, 2], encode=‘ordinal’).fit(X)
est.transform(X)
#out
array([[ 0., 1., 1.],
[ 1., 1., 1.],
[ 2., 0., 0.]])

分位数切分

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对数变换 BOX-COX变换

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

日期相关特征

将时间转换为pandas中的时间属性,可以直接用 .day .month调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文档:
sklearn 学习 第二篇:特征预处理
百度百科box-cox变换
唐宇迪 机器学习-特征工程-常用特征提取方法

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值