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

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 后:
特征工程常用于特征提取方法——数值特征
此部分来源于:https://blog.****.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,a2,ab,b2][a,b,a^2,ab,b^2]
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变换
唐宇迪 机器学习-特征工程-常用特征提取方法