特征工程的主要目标是从算法中获得最好的结果,今天小普从以下7个步骤,让大家了解机器学习算法特征工程的分步过程,如果你觉得有帮助的话,记得给小普点赞支持一下吧,小普又充满了动力~

  1. 特征选择
  2. 处理缺失值
  3. 处理不平衡的数据
  4. 处理异常值
  5. 分档
  6. 编码
  7. 特征缩放

1.特征选择

特征选择是对所需的独立特征的选择。选择与依赖特征有更多关系的独立特征将有助于建立一个好的模型。一般做好特征选择有以下几种方法:

2.1 与热图的相关矩阵

热图是 2D(二维)数据的图形表示。每个数据值表示在一个矩阵中。

我们首先,绘制所有独立特征和依赖特征之间的配对图。它将给出依赖和独立特征之间的关系。独立特征和依赖特征之间的关系小于 0.2 则选择该独立特征来构建模型。

2.2 单变量选择

在这种情况下,可以使用统计测试来选择与依赖特征具有最强关系的独立特征。SelectKBest方法可以与一套不同的统计测试一起使用,以选择特定数量的特征。

  • 得分最高的特征将与依赖特征更相关,并为模型选择这些特征。

2.3 ExtraTreesClassifier 方法

在此方法中,ExtraTreesClassifier 方法将有助于通过依赖特征给出每个独立特征的重要性。特征重要性将为您的数据的每个特征提供分数,分数越高,与输出变量的特征越重要或相关。

3. 处理缺失值

在一些数据集中,我们得到了特征中的 NA 值。这只不过是丢失的数据。通过处理这种类型的数据,有很多方法:

  • 在缺失值的地方,用平均值或中位数替换缺失值到数值数据,用众数替换分类数据。

  • 删除 NA 值整行。

  • 删除 NA 值整个特征。(如果特征中的 NA 值超过 50%,这会有所帮助)

  • 将 NA 值替换为 0。

如果选择放弃选项的话,很有可能会丢失其中的重要信息,因此,这里建议大家最好选择替换选项。

4. 处理不平衡数据

为什么需要处理不平衡的数据?因为减少过拟合和欠拟合的问题。

假设一个特征有一个因子 level2(0 和 1)。它由 1 的 5% 和 0 的 95% 组成。它被称为不平衡数据。

例子:-

为了防止这个问题,有一些方法:

4.1 欠采样多数类

对多数类进行欠采样将重新采样数据中的多数类点,使它们等于少数类。

4.2 通过重复对少数类进行过采样

过采样少数类将重新采样数据中的少数类点,使它们等于多数类。

4.3 使用合成少数类过采样技术(SMOTE)对少数类进行过采样

在这种方法中,为少数类生成合成样本,并等于多数类。

5. 处理异常值

首先,计算特征的偏度并检查它们是正偏斜、负偏斜还是正常偏斜。另一种方法是将箱线图绘制为特征并检查是否有任何值超出范围。如果存在,它们被称为异常值。

如何处理这些异常值: –

首先,计算 25% 和 75% 的分位数值。

  • 接下来,计算四分位距

IQR = Q3 – Q1

  • 接下来,计算上极值和下极值

下限=Q1 – 1.5 * IQR

上限=Q3– 1.5 * IQRe

  • 最后,检查值将高于上限或低于下限。如果出现则删除它们或用平均值、中值或任何分位数替换它们。
  • 用均值替换离群值

  • 用分位数值替换异常值

  • 丢弃异常值

6. 分档

分箱只不过是使范围内的任何数据值适合分箱。这在您的数据探索活动中很重要。我们通常使用它将连续变量转换为离散变量。

假设如果我们有连续的 AGE 特征,并且我们需要将年龄分组作为一个特征,那么它将很有用。

7. 编码:

为什么这将适用?因为在数据集中我们可能包含对象数据类型。为了构建模型,我们需要让所有特征都是整数数据类型。因此,Label Encoder 和 OneHotEncoder 用于将对象数据类型转换为整数数据类型。

  • 标签编码

应用标签编码之前

应用标签编码后,然后应用列转换器方法将标签转换为 0 和 1

  • 一种热编码:

通过应用 get_dummies,我们直接将分类转换为数值

8. 特征缩放

为什么这种缩放适用?因为要减少方差效应并克服拟合问题。有两种类型的缩放方法:

8.1 标准化

什么时候用这个方法呢?。当所有特征都具有高值时,而不是 0 和 1。

它是一种标准化存在于固定范围内的独立特征以使所有值达到相同量级的技术。

在标准化中,独立特征的均值为0,标准差为1。

方法一:

方法二:

编码后的特征标签在 0 和 1 中。这可能会影响标准化。为了克服这个问题,我们使用归一化。

8.2 规范化

归一化还通过特征的规模使训练过程不那么敏感。这导致在训练后获得更好的系数。

方法一:-MinMaxScaler

它是一种通过减去特征的最小值然后除以范围来将特征重新缩放到[0,1]的硬且快速范围的方法。

方法 2: – 均值归一化

这是一种将特征重新缩放到 [-1,1] 且均值 = 0 的硬性和快速范围的方法。

在本文中,我逐步介绍了特征工程的过程,目的是提高机器学习算法的预测精度。

当然,没有特定的方法可以提高预测准确性,取决于数据并应用多种方法。

小普推荐尝试使用不同的数据集并对其进行分析,码字不易,给小普一点鼓励

特征选择-处理缺失值-处理不平衡的数据-处理异常值-分档-编码-特征缩放相关推荐

  1. pandas用众数填充缺失值_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...

  2. R语言把dataframe数据转化为tibble格式、查看每个数据列的缺失值个数、使用数据列的均值对数据列的缺失值进行填充

    R语言把dataframe数据转化为tibble格式.查看每个数据列的缺失值个数.使用数据列的均值对数据列的缺失值进行填充 目录

  3. 数据科学-通过数据探索了解我们的特征

    简介 对于数据科学而言,我们要做的第一件事情,必然是了解我们的数据.而在数据探索期间,pandas和matplotlib 则是我们进行数据探索的利器.本文主要分为三个部分,第一部分是利用pandas进 ...

  4. 按某列获取几行_机器学习获取数据难?别忘记特征工程

    现实世界中的数据可能十分混乱复杂,不论它是相关的SQL数据库.Excel文件或是其它任何数据源.尽管这些数据通常都是表格的结构,即每一行(样本)相对于每一列(特征)都有其对应的值,但是这些数据可能很难 ...

  5. 机器学习特征工程之特征缩放+无量纲化:数据标准化(StandardScaler)

    机器学习特征工程之特征缩放+无量纲化:数据标准化(StandardScaler) 在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling).进行 ...

  6. 什么样的模型是好的模型 好的数据胜于好的特征,好的特征胜于好的算法

    数据科学领域非常流行的一句话:"好的数据胜于好的特征,好的特征胜于好的算法."应用于机器学习时,这句话还有另一种表达形式:"数据和特征决定了机器学习的上界,模型只是在不断 ...

  7. 数据预处理-异常值识别

    数据预处理-异常值识别  from:http://shataowei.com/2017/08/09/%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86-%E5% ...

  8. 线性八叉树_基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,).pdf...

    基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,) ·70 · 计算机应用研究 2005 年 基于三维点云数据的线性八叉树编码压缩算法 * 权毓舒, 何明一 ( 西北工业大学 电子信息学院 ...

  9. Scikit-learn数据预处理分类变量编码之字段特征编码

    Scikit-learn数据预处理分类变量编码之字段特征编码 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 字段特征编码简介 ...

最新文章

  1. 替换字符串空格 - Java - StringBuffer
  2. Facebook开源NLP建模框架PyText,从论文到产品部署只需数天
  3. 如何备考上海市高等学校计算机一级,如何备考全国计算机一级等级考试
  4. cmd复制.java并合并为.txt
  5. 最长上升子序列—leetcode300
  6. java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园
  7. centos6.8安装oracle12C 详细步骤讲解
  8. UCan下午茶武汉站,为你全面挖宝分布式存储
  9. 在线文字图标logo文章封面图生成工具
  10. linux部署rabbit mq,Linux安装rabbitmq遇到的问题
  11. nekohtml和xpath
  12. 刚买的win8.1电脑 求常用的软件推荐?
  13. 微信公众号文章如何设置关键词自动回复链接
  14. python画螺旋_如何用python turtle画斐波那契螺旋曲线?
  15. Autofill chrome 表格自动填充
  16. 1.(group by)如何让group by分组后,每组中的所有数据都显示出来
  17. 程序员等级图鉴,大牛头发有点少
  18. 51nod 1431 快乐排队
  19. keras进阶之poly学习率
  20. 负数在java_在负数中使用Java纪元秒

热门文章

  1. 倒计时1天 | 2019 中国大数据技术大会(BDTC)报名通道即将关闭(附参会提醒)...
  2. 经典!工业界深度推荐系统与CTR预估必读的论文汇总
  3. 如何让AI教机器自己玩俄罗斯方块?
  4. Python | 一万多条拼车数据,看春运的迁徙图
  5. 《请不要回应外星人2019》
  6. 20T数据、百万奖金,同济和武大摘得开放数据创新应用大赛桂冠!
  7. 微软出手,干翻 IDEA?网友:先干翻Eclipse吧..
  8. 昨晚,我们的消费者居然停止消费kafka集群数据了
  9. MyBatis 的工作原理,你了解过吗?
  10. CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数