机器学习实战 | 数据探索

数据的输入质量决定了输出的最后结果,数据的探索、预处理、特征选择、降维等特征工程占了项目的70%的时间。那么如果我们确定了商业目的,该如何一步一步渐进式进行特征工程呢?各位看官不急,请小的慢慢给你道来。

在建立模型前,我们大致需要顺序经过以下几步:

1、变量识别 2、单变量分析 3、双变量分析 4、缺失值处理 5、异常值处理 6、变量变化 7、变量创建

其中第4-7步在模型优化中会重复进行。

1、变量识别

首先,识别Predictor(即feature、输入)和Target(输出)变量。 接下来,确定变量的数据类型和类别。

举一个例子,让我们更清楚地了解这一步。 假设我们想预测学生是否会玩板球(参考下面的数据集),需要识别预测变量、目标变量,变量的数据类型和变量类别。

那么

Data_exploration_2.png

2、单变量分析

在这个阶段,我们逐个探索变量。 执行单变量分析的方法取决于变量类型是分类类型还是连续类型。

3、连续变量

在连续变量的情况下,我们需要了解变量的中心趋势和分散,使用各种统计度量可视化方法进行测量,如下所示

Data_exploration_31.png

4、分类变量

对于分类变量,我们可使用频率表来了解每个类别的分布,也可以读取每个类别下的值的百分比,也可以使用每个类别的Count和Count%来衡量。Bar chart可以用作可视化。

5、双变量分析

双变量分析的主要目的是发现两个变量之间的关系。可以对分类和连续变量的任何组合执行双变量分析。如:Continuous & Continuous,Categorical & Categorical,Categorical & Continuous and Continuous & Continuous。

6、Continuous&Continuous

在两个连续变量之间进行双变量分析时,散点图( scatter plot)是找出两个变量之间的关系的一个很好的方式。 散点图表示变量之间的关系可以是线性或非线性。

correlation-examples

  • -1: perfect negative linear correlation
  • +1:perfect positive linear correlation and
  • 0: No correlation

scatter plot只是直观来看,但是相关性如何计算呢?一般通过Pearson Correlation 来计算,缺点是:只可以确定线性相关性。非线性关系,可以采用互信息法,互信息系数能够很好地度量各种相关性,但是计算相对复杂一些。Pearson Correlation 计算方法如下:

correlation-calc1

Step 1: 计算x、y的均值 Step 2: x的每个值减去x的均值得到a, y值做类似操作得到b Step 3: 计算: a × b, a的平方和b的平方 Step 4: 求a × b, a平方和b平方的和 Step 5: 如5的公式

7、Categorical&Categorical

双向表:我们可以通过创建一个计数和计数%的双向表来开始分析关系,行表示一个变量的类别,列表示另一个变量的类别,如图。

Data_exploratio

Stacked Column Chart:更直观,如上图。 卡方检验:计算方法可以参考前面文章 确定自变量和因变量的相关性

p值为0:表示两个变量是相关的 p值为1:表示两个变量是独立的

7、Categorical&Continuous

在探索分类和连续变量之间的关系时,我们可以为每个级别的分类变量绘制box plot,但不显示统计学意义。 为了看统计学意义,我们可以进行Z检验,T检验或方差分析。

T检验与Z检验非常相似,但用于当两个类别的观察次数小于30时,方差分析用于评估两个以上组的平均值是否在统计学上不同。

下篇再接着介绍。

8、参考

1、central measures(https://www.mathsisfun.com/data/central-measures.html) 2、range(https://www.mathsisfun.com/data/range.html) 3、https://www.analyticsvidhya.com/blog/2016/01/guide-data-explo

4、ration/(https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/)

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

AOE关键路径

这个算法来求关键路径,其实就是利用拓扑排序,首先求出,每个节点最晚开始时间,再倒退求每个最早开始的时间。 从而算出活动最早开始的时间和最晚开始的时间,如果这两个...

2527
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

462
来自专栏开发与安全

算法:最短路径之弗洛伊德(Floyd)算法

为了能讲明白弗洛伊德(Floyd)算法的主要思想,我们先来看最简单的案例。图7-7-12的左图是一个简单的3个顶点的连通网图。 ? 我们先定义两个二维数组D[3...

3446
来自专栏聊聊技术

原 初学图论-Kahn拓扑排序算法(Kah

2878
来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4519
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3165
来自专栏刘君君

JDK8的HashMap源码学习笔记

3038
来自专栏Phoenix的Android之旅

Java 集合 Vector

List有三种实现,ArrayList, LinkedList, Vector, 它们的区别在于, ArrayList是非线程安全的, Vector则是线程安全...

672
来自专栏计算机视觉与深度学习基础

Leetcode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given...

1948
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1444

扫码关注云+社区