前言:

在前一篇中,已经搭建好了Tensorflow环境,本文将介绍如何准备数据与预处理数据。

正文:

在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的。

一、数据准备:

一般分为三个步骤:数据导入,数据清洗,数据划分。

1、数据导入:

数据存放在原始格式多种多样,具体取决于用于导入数据的机制和数据的来源。比如:有*.csv,*.txt,*xls,*.json等。

2、数据清洗:

数据清洗主要发现并纠正数据中的错误,包含检查数据的一致性,数据的无效值,以及缺失值等。

一致性检查:根据每个变量的合理取值范围和相互关系,检查数据是否符合要求,要求异常或逻辑上不合理的数据。

无效值和缺失值检查:由于编码或录入误差,数据中可能存在一些无效的值和缺失值,需要对其进行适当的处理:估算,整例删除,变量删除等方法来保证数据的完整性。

数据清洗的基本操作有:

选择,过滤,去重,采样,变换(归一化,标准化,缩放),数据替换(剪切,分割,合并),加权(属性加权,自动优化),属性生成,数据填补等。

3、数据划分:

数据划分是机器学习训练必不可少的一个环节,将数据分成不同部分,一部分用于训练,一部分用来验证或测试模型。

一般可采用以下方法:

1、按一定比例划分训练集与测试集,根据数据集大小,按8:2或7:3比例划分;

2、交叉验证法,采用K折交叉验证法;

二、特征工程:

(机器学习与深度学习最大的区别就是:在机器学习中,特征工程是独立的,而在深度学习中,特征工程是与模型整合在一起的。)

特征工程是将原始数据转化为特征的过程,这些特征可以很好的描述潜在问题,进而提高模型对未知数据的准确性。

特征一般分两类:

固有的原始特征:直接从数据集中获得;

从特征工程中获得:需要从现有的数据属性中提取出来的特征。

特征工程处理过程分三步:

特征提取,特征缩放,特征编码。

1、特征提取:

将原始数据转换为一组有明显特征意义的特征。去除无关特征或关联性很小的特征可以降低学习任务的难度,降低模型的复杂度。

主要方法:PCA和ICA

PCA(主成分分析)

找到数据中的主成分,利用这些主成分来表征原始数据,从而达到降维的目的。

步骤:1)对样本数据中心化处理;

2)求样本协方差矩阵;

3)对协方差矩阵进行特征分解,并从大到小排列;

4)取特征值前n个最大对应的特征向量。

ICA (独立成分分析)

获取相互独立的属性,寻找一个线性变换:z=Wx,使得z的各个特征分量之间的独立性最大。

2、特征缩放

特征缩放包含两种方法:归一化和正则化

归一化是将特征都缩放到一个指定的数据区间内。一般有两种归一化方法:线性函数归一化和零均值归一化。

线性函数归一化: X =(X-Xmin)/(Xmax-Xmin)

零均值归一化: 将原始数据映射到均值为0,方差为1的分布上。

3、特征编码

1)序号编码:

处理类别间大小关系的数据。

例如:在高,中,低三个档次,存在高 > 中 > 低的关系,就可以用序号编码对这三个档次进行编码:高表示3,中表示2,低表示1,转换后依然保留了大小关系。

2)独热编码:

用于处理类别间不具体大小关系的特征。

采用N位状态位来对N个可能的取值进行编码。

例:是否推出提示,有两种取值(推出,不推出),那么独热编码会将提示转换成一个2维向量:推出(1,0),不推出(0,1)

上一篇:环境搭建与包安装

使用Tensorflow搭建回归预测模型之一:环境安装

下一篇:模型搭建与训练

使用Tensorflow搭建回归预测模型之三:模型搭建与训练

使用Tensorflow搭建回归预测模型之二:数据准备与预处理的更多相关文章

  1. 使用Tensorflow搭建回归预测模型之一:环境安装

    方法1:快速包安装 一.安装Anaconda 1.官网地址:https://www.anaconda.com/distribution/,选择其中一个版本下载即可,最好安装3.7版本,因为2.7版本2 ...

  2. [DL学习笔记]从人工神经网络到卷积神经网络_3_使用tensorflow搭建CNN来分类not_MNIST数据(有一些问题)

    3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道 ...

  3. 10分钟搞懂Tensorflow 逻辑回归实现手写识别

    1. Tensorflow 逻辑回归实现手写识别 1.1. 逻辑回归原理 1.1.1. 逻辑回归 1.1.2. 损失函数 1.2. 实例:手写识别系统 1.1. 逻辑回归原理 1.1.1. 逻辑回归 ...

  4. 用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识

    用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识 循环神经网络RNN相比传统的神经网络在处理序列化数据时更有优势,因为RNN能够将加入上(下)文信息进行考虑.一个简单的RNN如 ...

  5. (转)一文学会用 Tensorflow 搭建神经网络

    一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...

  6. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  7. 用Tensorflow搭建神经网络的一般步骤

    用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...

  8. 一文学会用 Tensorflow 搭建神经网络

    http://www.jianshu.com/p/e112012a4b2d 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码 ...

  9. SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)

    本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...

随机推荐

  1. Httpwatch抓包

    一.下载Httpwatch 二.抓包 1.启动Httpwatch 打开浏览器-选择工具-Httpwatch professional(仅适用于IE和火狐40及以下浏览器) 2.开始抓包 点击“Reco ...

  2. spring security跳过认证

    在启动springboot的时候,给启动注解后添加这个exclude参数后接想要跳过的类就不会加载它了. @SpringBootApplication(exclude = { org.springfr ...

  3. __proto__ VS. prototype in JavaScript

    __proto__ VS. prototype in JavaScript http://dmitrysoshnikov.com/ecmascript/javascript-the-core/#a-p ...

  4. 微信小程序 API 网络(ajax)

    网络 API 类似于 ajax 向服务器请求网络地址,唯一不同的是这个请求有很多的规则,且必须向服务器上请求,不能在本地请求 网络 发送请求: wx.request() 发起https网络请求 参数: ...

  5. day65—angularJS的学习笔记1

    转行学开发,代码100天—2018-05-20 AngularJS的引用示例: <!DOCTYPE html> <html> <head> <title> ...

  6. C#学习基础

    c#的值类型存储在栈里,而引用类型的引用存储在栈里,数据存储在堆里. c#new关键字为对象分配一个引用而非存储数据. 引用类型关键字ref: For example: Int y; void mym ...

  7. ContextLoader

    // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...

  8. cocos2dx基础篇(21) 进度条CCProgressTimer

    [3.x] (1)去掉 "CC" (2)CCProgressTimerType 改为强枚举 ProgressTimer::Type:: // RADIAL //扇形进度计时器 BA ...

  9. C语言Ⅰ博客作业02

    1. 这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程 ...

  10. 分享一个linux系统中循环遍历两个数组内容,并输出数组中的不同内容的shell脚本

    cat diffarray.sh #!/bin/bash arry_list1=(1 2 3 4 5 6 7 8 9) arry_list2=(3 5 8) declare -a diff_list ...