Day 1_Data PreProcessing(数据预处理)

本文引用自 Day 1_Data PreProcessing, 对其中内容进行了评注与补充说明。

导入数据

dataset = pd.read_csv('Data.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values

处理缺失数据

通过观察,可以发现导入的数据中存在部分缺失,这样的数据必须处理后才能进行数据分析,这个过程被称为数据清理。一般来说数据清理主要处理缺失值和噪声数据。<<数据挖掘概念与技>>中对数据清理有详细的描述。这里作者用了比较通用的方法,分别用Age、Salary两列的平均值来填充缺失值。

Country Age Salary Purchased
France 44 72000 No
Spain 27 48000 Yes
Germany 30 54000 No
Spain 38 61000 No
Germany 40 Yes
France 35 58000 Yes
Spain 52000 No
France 48 79000 Yes
Germany 50 83000 No
France 37 67000 Yes
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])

分离变量编码

观察Country这列的数据发现,这列的数据由France、Spain、Germany组成,这种类型的数据被称为分类变量或者称为标签变量,为了进行数据分析通常需要将这种类型的变量转换为数值型。

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])

上面的代码执行后,Country中的France、Spain、Germany被编码为0, 1, 2,完成了由分类变量到到数值型变量的转换。通常为了进行进一步的处理,还需要引入哑元变量将数据从一维转为多维,sklearn包中的OneHotEncoder工具可以方便的完成这项工作。

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)

划分测试数据集和训练数据集

为了得到可靠稳定的模型,通常需要进行交叉验证(Cross Validation),交叉验证是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据进行分组,一部分做为训练集,另一部分做为验证集,首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型,以此来做为评价分类器的性能指标。

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

特征规约

通常情况下不同维度的数据单位是不同的,比如已知房价受距离市中心距离与自身面积的影响,现在有这样的数据(1.5, 50, 180), (3, 100, 200), (8, 150, 220), ...。数据中第一维度x表示距市中心距离(km),第二维度y表示面积(m^2), 第三维度z表示房价(万)。现在想获得z与x、y之间的对应关系,假定使用线性回归方法进行计算: z = w1 * x + w2 * y + b。这时会发现数据中x的变化范围较小,而y的变化范围较大,就回归方程而言y的变动将对结果起到较大的影响,而x的变化对整个方式结果的影响较小,甚至可以忽略不计,但实际情况是距市中心的距离有又实实在在的影响房价。为了解决这一问题需要对x、y进行归一化处理,将这两个变量压缩到相同的范围区间内,忽略计量单位带来的影响。比如将x、y压缩到[0, 1]或[-1, 1]的区间内。

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)

参考资料

100-Days-Of-ML-Code 评注版(Day 1)的更多相关文章

  1. 100个Swift必备Tips(第二版)

    100个Swift必备Tips(第二版) 新年第一天,给大家一本电子书,希望新的一年里,步步高升. GitHub

  2. 即学即会 Java 程序设计基础视频教程(100课整)无水印版

    课程总共包含100个课时,总授课长达27多个小时,内容覆盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟通过本套视频的学习,学员能够快速的掌握java编程语言,成为java高手. 课程目录:课时1 ...

  3. 100-Days-Of-ML-Code 评注版(Day 3)

    Day3_Multiple_Linear_Regression(多元线性回归) 本文引用自 Multiple_Linear_Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测 ...

  4. 100-Days-Of-ML-Code 评注版(Day 2)

    Day2_Simple_Linear_Regression(一元线性回归) 本文引用自 Simple Linear Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测性的建模 ...

  5. VS Code mac版全局搜索失效最简单解法

    网上百度到的一些说法,说是添加以下命令行 "search.exclude": { "system/": true, "!/system/**/*.ps ...

  6. 今天,VS Code 五岁了。

    时光飞逝,岁月如梭.今天,VS Code 迎来了 5 岁的生日. 回想起 VS Code 发布的那一天,仿佛还在昨天. 回顾 VS Code 这五年的发展,总是能给我们开发者带了无限的惊喜. 2015 ...

  7. Azure SQL 数据库最新版本现已提供预览版

     Tiffany Wissner  数据平台营销高级总监 我们之前在11月宣布将提供新的预览版,在该预览版中我们引入了接近完整的 SQL Server 引擎兼容性和更为高级的性能,这些都代表了下一代的 ...

  8. 100本最棒的web前端图书推荐

    前端技术,要学习的内容太多了,当你不知道从哪里开始的时候,你就先从看书开始,边看书边码代码,这个是学习编程必须的过程,因为你看一百遍,还不如自己写一遍,写一遍,第一可以加印象,第二便于更好的理解. 熟 ...

  9. Redis Windows版安装详解

    一.下载Redis Redis下载有两个途径一是官网.二是Github,由于Redis官方只支持Linux系统,所以官网是没有Windows版本的,不过微软开源团队维护了一份所以我们可以使用这个. 官 ...

随机推荐

  1. es6常见特性

    Parameters(参数) in ES6 Template Literals (模板文本)in ES6 Multi-line Strings (多行字符串)in ES6 Destructuring  ...

  2. Value与Sql Value

    在使用Value作为参数传递给SqlServer时 实际上传递的是SqlValue 为其赋值的一种方式,可以将datetime类型转换成string类型(yyyy-MM-dd HH:mm:ss)

  3. SQL 常用语法

    一.SQL分类 DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRA ...

  4. Exchange 2007 前端 IIS 内存占用过高

    已经碰见了好几次,在Exchange2007的场景中,前端角色所在服务器的w3wp.exe进程总是占用大量内存,以至于触发反压组件,停止了正常的邮件流投递,造成业务中断. 终于下决心查一下到底问题问题 ...

  5. 第三次作业 史浩然 -assassin Talon

  6. 延期年金(deferred annuity)

    含义:推迟m个时期后才开始付款的年金. 延期年金现值为 二.永续年金(Perpetuity) 永续年金:无限期支付下去的年金. 为期末付永续年金(perpetuity-immediate)的现值 表示 ...

  7. Spark shuffle调优

    1:sparkconf.set("spark.shuffle.file.buffer","64K") --不建议使用,因为这么写相当于硬编码2:在conf/sp ...

  8. FOR YOU

    给你 作者:余秀华 一家朴素的茶馆, 面前目光朴素的你皆为我喜欢 你的胡子,昨夜辗转的面色让我忧伤 我想带给你的,一路已经丢失得差不多 除了窗外凋谢的春色 遇见你以后,你不停地爱别人,一个接一个 我没 ...

  9. java数组回顾---线性查找最大值最小值---二分查找

    import java.util.Scanner; public class ArrayDemo { public static void main(String []args) { //------ ...

  10. Eclipse 连接真实机器调试

    一.手机开启调试模式 二.安装adb.exe 1.确信 \android-sdk-windows\tools\下有 adb.exe     AdbWinApi.dll     AdbWinUsbApi ...