100-Days-Of-ML-Code 评注版(Day 1)
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)的更多相关文章
- 100个Swift必备Tips(第二版)
100个Swift必备Tips(第二版) 新年第一天,给大家一本电子书,希望新的一年里,步步高升. GitHub
- 即学即会 Java 程序设计基础视频教程(100课整)无水印版
课程总共包含100个课时,总授课长达27多个小时,内容覆盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟通过本套视频的学习,学员能够快速的掌握java编程语言,成为java高手. 课程目录:课时1 ...
- 100-Days-Of-ML-Code 评注版(Day 3)
Day3_Multiple_Linear_Regression(多元线性回归) 本文引用自 Multiple_Linear_Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测 ...
- 100-Days-Of-ML-Code 评注版(Day 2)
Day2_Simple_Linear_Regression(一元线性回归) 本文引用自 Simple Linear Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测性的建模 ...
- VS Code mac版全局搜索失效最简单解法
网上百度到的一些说法,说是添加以下命令行 "search.exclude": { "system/": true, "!/system/**/*.ps ...
- 今天,VS Code 五岁了。
时光飞逝,岁月如梭.今天,VS Code 迎来了 5 岁的生日. 回想起 VS Code 发布的那一天,仿佛还在昨天. 回顾 VS Code 这五年的发展,总是能给我们开发者带了无限的惊喜. 2015 ...
- Azure SQL 数据库最新版本现已提供预览版
Tiffany Wissner 数据平台营销高级总监 我们之前在11月宣布将提供新的预览版,在该预览版中我们引入了接近完整的 SQL Server 引擎兼容性和更为高级的性能,这些都代表了下一代的 ...
- 100本最棒的web前端图书推荐
前端技术,要学习的内容太多了,当你不知道从哪里开始的时候,你就先从看书开始,边看书边码代码,这个是学习编程必须的过程,因为你看一百遍,还不如自己写一遍,写一遍,第一可以加印象,第二便于更好的理解. 熟 ...
- Redis Windows版安装详解
一.下载Redis Redis下载有两个途径一是官网.二是Github,由于Redis官方只支持Linux系统,所以官网是没有Windows版本的,不过微软开源团队维护了一份所以我们可以使用这个. 官 ...
随机推荐
- C# winfrom DataGridView用法
DataGridView列的宽度自动调整,可以使用DataGridView.AutoSizeColumnsMode属性实现. 下面的代码就是列的宽度根据Header和所有单元格的内容自动调整的. // ...
- 初始HTML
了解HTML 1.1 HTML的作用 HTML就是用来制作网页 1.2 什么是HTML HTML是英文HyperText Markup Language的首字母缩写,即超文本标 ...
- c#微信开发,使用JS-SDK自定义分享功能,分享朋友圈,分享给朋友等
如果一个后端开发掌握了微信开发,甚至有微信开发上线项目,这在换工作的时候 还是有竞争力的. 微信开发的资料很多,但是用asp.net c#进行微信开发好像比较少,或者资料不够完整. 使用JS-SDK自 ...
- 企业级Ngnix基于域名的配置_include
使用include进行nginx.conf文件1. 编辑文件 vim /usr/local/nginx/conf/nginx.conf worker_processes 1; events { wor ...
- 企业办公领域: Windows + Office的组合在未来能抵挡住 Google Apps的冲击么
从个人角度讲,我基本上不怎么喜欢微软的产品,即便是其无处不见的Windows. Windows 8用了几个月的后,实在无法忍受其某些SB的设计,还是换回Win7.另外自从用上了MacBook 以后, ...
- c++计算器后续(2)
自娱自乐: 大概是了解了一下前缀.中缀.后缀表示法是啥,并没有去深究,比如考虑实现啊,然后Calculation类里面的计算方法还是选用原来的直接对中缀表达式求值,只是把代码改得规范点,以上. 各表示 ...
- java继承-静态绑定和动态绑定
静态绑定和动态绑定: 静态:程序执行前方法已经被绑定,针对java简单可以理解为程序编译器已的绑定(静态绑定)java当中的方法是final.static.private构造方法都是前期绑定 动态:运 ...
- css3优惠券
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...
- Protocols, Generics, and Existential Containers — Wait What?
For the longest time now, I thought that the two functions above were the same. But in actuality, wh ...
- 【php】php与mysql初体验
第一次体验在web站点上使用MySQL数据库,遇到了很多问题,总结如下: 1.安装XAMPP软件后,将文件放到hotdocs文件夹下,要访问其中的文件,使用localhost/XXX/XXX ,路径要 ...