数据分析之路持续学习中- - -

近期学习了机器学习中的数据预处理章节,在此进行分享,欢迎大家讨论指正。

顺便说一下,这里我使用的软件是Anacnoda 3中已经安装好的Spyder 3,这个软件用起来很爽,适合用来做数据分析,缺点就是不好进行调试以及管理大型项目。

如果是要用来做网页等大型工程的话,建议:Anacnoda + Pycharm。

数据预处理有哪些步骤?

机器学习中,数据预处理全流程一般包含以下6大步骤:
(1)导入标准库:如:pandas、numpy、matplotlib等;
(2)导入数据集:将需要分析的数据读入;
(3)缺失数据处理:对数据表中的空值进行处理;
(4)分类数据:将需要的维度数据(如:国家)转换为能带入公式中的可度量值;
(5)数据划分训练集、测试集:将数据集的数据按一定比例进行随机拆分,形成训练集与测试集;
(6)特征缩放:将不在同一数量级的数据进行处理,加快程序运行速度,以及尽快得到收敛结果。

一般情况下,我们得到的数据集都是经过处理的比较规整的数据,因此,常用的4个步骤是:

  • 导入标准库;
  • 导入数据集;
  • 数据划分训练集、测试集;
  • 特征缩放;
    下面将对6个步骤进行分步解读:

步骤1:导入标准库

在数据分析或机器学习中,常用的3个标准库如下:
(1)numpy
numpy是Python的一个高性能科学计算和数据分析的基础包,拥有强大的数组和矢量的计算方法可供直接调用。
(2)pandas
基于numpy创建的,含有DataFrame等高级数据结构和操作方法,能够让数据处理问题变得更简单更高效。
(3)matplotlib
是一个类似于Matlab的一个画图工具,是python的一个画图基础包,能够使用它其中的方法画出各种可视化图表;
下面将给出导入标准库的代码:


# Step1:导入标准库,Importing the Librariesimport numpy as np
import pandas as pd
import matplotlib.pyplot as plt

步骤2:导入数据集

导入数据集,需要用到pandas标准库中的数据读入函数,我们常用其读入csv文件或者excel文件:

  • 读取csv或者text文件:read_csv();
  • 读取Excel文件:read_excel();

使用方法,以csv文件为例,就是:dataset = pd.read_csv(‘data.csv’)

我们以图中数据data.csv为例,进行导入:


导入数据后,我们还需要将数据的自变量和因变量进行分离,以达到数据分析目的。

# Step2:导入数据集dataset = pd.read_csv('data.csv')
# 自变量与因变量分离,自变量取前三列,因变量为最后一列,是否购买
x = dataset.iloc[:,:-1].values
y =  dataset.iloc[:,3].values

得到的结果如图所示:
(1)得到的DataFrame

(2)得到的自变量和因变量如图:

步骤3:缺失数据处理

在我们要分析的数据中,有时候会因为数据采集不全等情况,而导致数据出现空值的情况。在数据分析的时候为了避免因为异常数据而带来的影响,我们可能需要想办法补齐这些数据。有人会说那删掉可以么?答案是:最好不要删除数据,因为有可能会删除重要数据,我们尽量保持数据样本的容量大一些,这样分析结果会更精准。

我们可以使用如下方法,填充空值:

  • 使用平均值填充;
  • 使用中位数填充;
  • 使用众数填充

但我们一般用平均数来填充,因为平均数在解释的意义上,比中位数是更具有优势,更具有解释性。这可以理解为大家喜欢用平均数说话,也更具有代表性,比如一般都说人均工资,而不会说人中位数工资是多少…

使用平均数对缺失值进行补充,代码如下:

# 导入数据预处理包from sklearn.preprocessing import Imputer# 对于Imputer的使用,这里不做详细解读
# 第一个参数为处理何值,第二个参数为如何处理(mean为平均数),第三个参数0意思是取列的平均值,后面为默认值,感兴趣的可查询官方文档进行研读。
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0, verbose = 0, copy = True)
# 对X进行拟合
imputer = imputer.fit(x[:,1:3])
# 将拟合结果返回到x中
x[:,1:3] = imputer.transform(x[:,1:3])

处理后结果如下:

我们可以看到原来的nan值已经替换为了平均值,缺失数据的处理就结束了

步骤4:分类数据

我们可以看到在数据中,因变量x中,有一列为Country,这一列是无法带入公式中计算的,因此我们需要将其进行分类,处理为可带入公式计算的矢量。
这里我们需要用到sklearn中的两个方法:

  • LabelEncoder:将数据进行标准化处理;
  • OneHotEncoder:将标准化数据,进行虚拟化处理。

处理代码如下:

# Step4:分类数据 Encoding Categorical data
from sklearn.preprocessing import LabelEncoder,OneHotEncoder# 创建一个对象
labelencoder_x = LabelEncoder()# 告诉程序处理哪一列数据
x[:,0] = labelencoder_x.fit_transform(x[:,0])
# 通过处理,使得无意义的维度代码,变成有意义的数据,以便带入公式中计算
onehotencoder = OneHotEncoder(categorical_features = [0])
x = onehotencoder.fit_transform(x).toarray()
# 同上处理,不同的是:因变量不用转换,因为python会自动识别其为分类数据,因此只要将其进行LabelEncoder处理即可
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)

处理结果如图:

步骤5:将数据划分为训练集和测试集

所谓机器学习,即让机器“自己学”,因此需要提供一定量的训练集供我们的模型进行训练,训练完成后我们还需要将一部分数据进行检验,查看效果如何。

一般的训练集与测试集的比例如下:

  • 训练集:0.5 - 0.8(最少最少0.5)
  • 测试集:0.2-0.8(一般选择0.2或者0.25或者1/3)

用Python实现训练集与测试集的划分如下:

# Step5:将数据划分为训练集与测试集
from sklearn.preprocessing import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)

所得训练集与测试集如图所示:

步骤6:特征缩放

在计算过程中,由于数据之间不在一个数量级,那么有可能所得的结果会比较难看,收敛情况比较难得到,计算性能也会相对较慢,因此会进行特征缩放操作。

python中进行特征缩放会用到Sklearn中的StandardScaler,因此需要进行导入

python的特征缩放代码如下:

# Step6:特征缩放from sklearn.preprocessing import StandardScaler
sc_x = StandardScaler()
x_train = sc_x.fit_transform(x_train)
x_test = sc_x.fit_transform(x_test)

进行特征缩放后,所得结果如下图所示:

以上就是机器学习的Python数据预处理代码。经过预处理后,就可以进行后续的数据挖掘操作了。

也欢迎大家关注我的知乎专栏《数据分析学习之路》,我将持续更新我数据分析学习之路的点点滴滴,与大家共同进步。谢谢大家!

在机器学习中,如何用Python进行数据预处理?相关推荐

  1. 如何用python进行数据预处理_Python数据预处理

    数据预处理是指在对数据进行数据挖掘之前,先对原始数据进行必要的清洗.集成.转换.离散和规约等一系列的处理工作,已达到挖掘算法进行知识获取研究所要求的最低规范和标准.通常数据预处理包括:数据清洗.数据集 ...

  2. 如何用python将数据写入Excel文件中

    如何用python将数据写入Excel文件中 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里 ...

  3. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  4. python读数据-如何用 Python 读取数据?

    原标题:如何用 Python 读取数据? 这是林骥的第 36 篇文章 1. 序言 读取数据往往是做数据分析的第一步,本文没有讲那些艰涩难懂的概念,只有一些问题的解决方案,当你遇到类似的问题的时候,可以 ...

  5. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

  6. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  7. Python数据分析数据预处理特征值独热编码

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 数据预处理 特征值独热编码 独热编码,是一种将分类变量转换为若干二进制 ...

  8. python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...

  9. 医学假阴性?看看在机器学习中如何用来衡量分类模型的效果(附代码)

    来源:数据鸽 本文约1500字,建议阅读5分钟. 本篇我们来看下医学假阴性在机器学习中是如何用来衡量预测结果好坏的. 近日来,新冠肺炎核酸检测"假阴性"引起了关注.所谓的假阴性,就 ...

最新文章

  1. C++中一些你不知道的冷知识
  2. CBNet:物体检测的一种新的组合主干网络结构
  3. Xendesktop 可基于物理机及虚拟机的桌面控制交付
  4. Soring冲刺计划第三天(个人)
  5. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...
  6. 从一点儿不会开始——Unity3D游戏开发学习(一)
  7. [RN] React Native 调试技巧
  8. php7 php5.6 array,[转]php5.6 升级到php7及变化
  9. python 建筑建模_不可错过的python 街道数据爬取和分析神器!
  10. 实用的 Python 之 feedparser
  11. 易灵思FPGA-软件Efinity和Modelsim联仿设置
  12. java事务是怎么处理的_Java事务处理
  13. Matplotlib 应用
  14. 【转】资深眼镜人告诉你一些所不为人知的眼镜知识和内幕
  15. C#使用FFmpeg实现视频压缩优化的探索
  16. 数据库驱动程序是什么?
  17. java中用于定义小数的关键字_Java 中用于定义小数的关键字有两个:( ) 和 ( )。_学小易找答案...
  18. 上个厕所的功夫弄清楚了ES搜索服务器
  19. SOC安全运营中心(一) OSSIM安装
  20. 如何使用 R 语言来绘制图表和图(曲线等)

热门文章

  1. 数据库MySQL(一) 常用查询语句
  2. 因为相信所以看见,既然看见注定坚信《11》
  3. 三星 s6 edge onDestroy多次调用问题
  4. Liunx——文件权限操作
  5. 【保理须知】商业保理十大业务模式介绍
  6. 贪心——Luogu2255 [USACO14JAN]记录奥林比克
  7. sqlserver2014默认实例_SQL Server2014数据库安装方法
  8. 三星Smart Home平台来了,这次与苹果无关
  9. 初学ZYNQ(理论准备)
  10. 浙江高考VB之约瑟夫环