机器学习实战的特征工程主要包含数据预处理、特征构建、特征选择三步,首先来介绍数据预处理。

我选择python作为工具,并将主要用到pandas、numpy等数据工具库。加载库:

import pandas as pd
import numpy as np

1. 观察数据

(1)查看数据的行数和列数

print("TRAIN shape:",train.shape)

(2)查看数据的标签

print("TRAIN columns:",train.columns)

(3)查看各字段的信息(大小、数据类型)

print("查看各字段的信息:\n"),train.info()     #不需要print

(4)查看数据描述(数据长度、均值、标准差、极大值、极小值、四分位点)

print("TRAIN describe:\n"), train.describe()

(5)查看本题的label

print('本题的label是:',set(train.columns)-set(test.columns))

2. 处理错误数据

如果观察数据时发现在某些应该是int或float等数值型的列的类型是object,表明存在错误数据,需要观察后进行处理。

(1)将内容为"\\N"的脏数据替换为-1

train['column_i'] = train['column_i'].replace("\\N",-1)

(2)将格式为'str'的数据转化为'float'型

train['column_i'] = train['column_i'].astype('float')

3. 缺失值处理

(1)查看缺失值所占比例

print("缺失值比例:", len(train['column_i'][pd.isnull(train['column_i'])]) / len(train['column_i']))

(2)删除包含缺失值的任意行

train = train.dropna()

(3)用0/-1/均值/众数/中位数填补

train = train.fillna(0)
train = train.fillna(-1)
train['column_i'] = train['column_i'].fillna(train['column_i'].mean()) #均值
train['column_i'] = train['column_i'].fillna(train['column_i'].mode()) #众数
train['column_i'] = train['column_i'].fillna(train['column_i'].median()) #中位数

4. 异常值处理

由于测量误差或实验误差,原始数据中可能会存在异常值。检测异常值最常见的方法是数据可视化,另外也可以根据一些规则来判定异常值,如将超出数据5%或95%的值视为异常值、距均值超过四分卫距两倍的值看作异常值等等。

5. 数据标准化与编码

(1)Min-Max标准化

也称离差标准化,将数据映射到0~1范围之内处理,对于方差非常小的属性可以增强其稳定性,公式为:

train['column_i'] = (train['column_i']-train['column_i'].min())/(train['column_i'].max()-train['column_i'].min())

(2)one-hot编码

将指定列进行one-hot编码,并合并到原dataframe中。

train = train.join(pd.get_dummies(train['gender']))

(3)映射编码

将无实际意义的离散值映射到0~n的范围内。

# 定义两个字典,用于映射
label2data = dict(zip(range(0,len(set(train['column_i']))),sorted(list(set(train['column_i'])))))
data2label = dict(zip(sorted(list(set(train['column_i']))),range(0,len(set(train['column_i'])))))
train['column_i'] = train['column_i'].map(data2label) #编码
train['column_i'] = train['column_i'].map(label2data) #解码

转载于:https://www.cnblogs.com/yucen/p/9912062.html

机器学习实战——特征工程之数据预处理相关推荐

  1. 机器学习笔记六——特征工程之数据预处理

    特征工程之数据预处理 1. 处理缺失值 2. 处理异常值 2.1 异常值检测 2.2异常值处理 3.离散特征的连续化处理 4.连续特征的离散化处理 5. 处理类别不平衡问题 6. 图片数据扩充 数据预 ...

  2. 特征工程之数据预处理(下)

    机器学习入门系列(2)–如何构建一个完整的机器学习项目,第四篇! 该系列的前三篇文章: 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一) 机器学习数据集的获取和测试集的构建方法 特征工程之 ...

  3. 特征工程之数据预处理(上)

    机器学习入门系列(2)–如何构建一个完整的机器学习项目,第三篇! 该系列的前两篇文章: 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一) 机器学习数据集的获取和测试集的构建方法 分别介绍了 ...

  4. 机器学习 | 特征工程(数据预处理、特征抽取)

    所谓特征工程即模型搭建之前进行的数据预处理和特征提取.有时人们常常好高骛远,数据都没处理好就开始折腾各种算法,从第一开始就有问题,那岂不是还没开始就已经结束了.所以说啊,不积跬步无以至千里,生活中的每 ...

  5. 机器学习系列(3)_特征工程01数据预处理

    参考链接: 1.scikit-learn官网 2.sklearn提供的自带的数据集 3.Kaggle官网 4.数据挖掘--无量纲化 文章目录 一.数据中台 二.sklearn中的数据预处理与特征工程 ...

  6. 【数据平台】sklearn库特征工程之数据预处理

    1.背景: 通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题: 不属于同一量纲:即特征的规格不一样,不能够放在一起比较.无量纲化可以解决这一问题. 信息冗余:对于某些定量特征,其包含的 ...

  7. 多特征值数据预处理_「人工智能」No.6 特征工程之数据预处理

    [导读:当今人类即将或者已然了进入智能时代,这是·情报通·人工智能科普系列第[6]篇文章,欢迎阅读和收藏!] 1 基本概念 "数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 ...

  8. 特征工程和数据预处理常用工具和方法

    import pandas as pdtrain_data = pd.read_csv("train.csv")train_data.shape #应该是给了property (8 ...

  9. 特征工程之数据预处理与可视化

    文章目录 前言 一.数据导入与查看 二.数据操作 三.可视化 1.显示两个特征的关系 2.热力图 前言 对于数据处理,我们可以运用python的一些库来完成和实现,下面是一些常用的程序代码总结 一.数 ...

最新文章

  1. c语言10000以内的质数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  2. Visual Studio Code Go 插件文档翻译
  3. frps 多个_frp端口批量穿透教程
  4. Hive表路径修改和分区表数据加载命令
  5. AutoBench的使用分析
  6. Android Fragment 简单实例
  7. vbs修改office设置_E002 Ruby 写入数据 【 =gt; Office 】
  8. 1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数...
  9. C++实现线段树RMQ-单点修改,区间查询
  10. 到达一个数 Reach a Number
  11. 位换记号、排列测试与状态图:杂耍中的数学
  12. 原生 js前端路由系统实现3之代码 构建工具 和 querystring功能
  13. git回滚命令reset、revert的区别
  14. 《重构HTML改善Web应用的设计》读书笔记
  15. LeetCode 96.不同的二叉搜索树(卡特兰数)
  16. CocoStudio工具集开发入门之UI编辑器教程
  17. 《Python程序设计(第3版)》课后习题答案
  18. 中科院计算所在可信大数据软件技术方面的研究工作【DOC+PPT下载】
  19. vue项目都在什么时候用store.state、$store.state和this.$store.state
  20. 数据库的主键约束和自增长

热门文章

  1. sqlserver生成脚本
  2. 手动添加ubuntu服务
  3. Javascript 笔记与总结(1-4)this
  4. 制作ubuntu 18.04 U盘启动盘
  5. S11 Linux系统管理命令
  6. sql求平均日活_杨学峰博客 | Flask Sqlarchemy实现按日、周、月统计并图表展示
  7. vspython版本控制_Python 版本管理
  8. python3.7怎么设置中文_解决 Bug · Python3.7.3官方文档 简体中文 · 看云
  9. 如何通过Port-isolate实现二层网络相互隔离
  10. 放下表格——开箱即用的新冠疫苗接种统计模板来了!