热线电话:13121318867

登录
2020-08-06 阅读量: 875
特征工程

数据无量纲化:

  • 作用:

    • 无量纲化可以加快求解速度(例如:逻辑回归、支持向量机、神经网络等)

    • 无量纲化可以帮 我们提升模型的精度(例如K近邻、K-Means聚类)

    • 决策树和树的集成(随机森林、Adaboost)算法比较特殊,对决策树我们不需要无量纲化,决策树可以把任意数据都处理得很好

  • 无量纲化的两种方式:

    • 归一化:对异常值敏感 (preprocessing.MinMaxScaler实现归一化,参数feature_range控制数据压缩的范围,默认是[0,1]

    • 标准化:标准化 (preprocessing.StandardScale实现标准化)

  • 归一化和标准化不会改变数据集的分布和信息,线性的处理不会改变数据集的分布

  • sklearn中标准化、归一化的包必须要在数据变为二维数组的时候才可以带进去运算,其实几乎所有的包都需要是二位数组才可以带入,除了对标签进行离散化的包外(LabelEncoder)

  • 相比归一化,标准化的结果更加准确,更加清晰。利用标准化的公式简化了算法,从而得到一个比较好的效果,因为标准化用到了均值和方差。

  • 数据的无量纲化可以是线性的,也可以是非线性的,线性的无量纲化包括中心化处理或缩放处理。中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到某个位置。缩放的本质是通过除以一个固定值,将数据固定在某个范围之中,取对数也算是一种缩放处理。

  • 对于连续型的变量最好是都做一下去量纲的操作

缺失值处理:

  • 均值:mean;中位数:median;众数:mode

  • 缺失值填充包 impute.SimpleImputer

  • 一般来说离散型的特征用众数填充,连续型变量用均值填充

  • 使用sklearn中进行缺失值填充时,首先要进行训练集和测试集的切分

  • 在进行量纲处理、编码处理等处理时,首先需要进行缺失值处理

  • 缺失值中可能存在千奇百怪的其他非法字符,可以使用value_counts来进行查看

  • 当数据存在两个相同的列时,放到模型中跑,模型会直接忽略其中一列

离散型变量的编码:

  • preprocessing.LabelEncoder,专门对标签进行编码,LabelEncoder这个是一个特例,不要求传入参数为二维数组

  • preprocessing.LabelEncoder包中,对训练集进行学习之后的模型,可以在calsses_中查看标签和编码的对应,标签按照顺序编0,1,2……

  • preprocessing.OrdinalEncoder,特征专用的库,可以对多个特征同时进行转换,categories_中记录编码的顺序

  • 对于名义变量必须需要使用独热编码的形式,使特征的每个取值之间相互独立。

  • 顺序变量可以不做独热编码,做普通编码即可

  • 在不确定变量的特征的时候,可以直接全部做独热编码,可能会对模型的运算效果有影响,但是计算的结果很精确

连续型变量的离散化:

  • 离散变量的分布比较奇怪时,例如如果是如下分布时,红色分布可能不能被模型读取到。可以将连续变量离散化,可能会提高模型的效果


  • 连续型变量编码可以进行二值化(需要通过观察分布来判断),或者采用分箱的方式进行(等频分享或者等距分箱或者k-means)

  • 连续型变量在进行离散化之前不需要先对特征进行去量纲的操作,因为去量纲的操作不改变数据的分布,因此可以在原始数据的基础上直接进行离散化


22.5216
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子