一起学!机器学习100天学习计划 (第1天 数据预处理)

AI派在读学生小姐姐Beyonce

Java实战项目练习群

长按识别下方二维码,按需求添加

扫码添加Beyonce小姐姐

扫码关注

进Java学习大礼包

《机器学习100天》学习计划由 Avik-Jain/100-Days-Of-ML-Code 推出,现在一共有54天的教程,已经积攒了近30k的Star.

中文版的《机器学习100天》由 MLEveryday/100-Days-Of-ML-Code 提供,感谢作者和若干贡献者们的付出!

这个项目的内容非常详细,不仅有相关内容的图解,作者还提供了源代码给大家进行学习,相当适合新手。

不过我们Python实用宝典推出的这个100天学习计划并不完全跟着原作者的思路来走,我们会锦上添花,适当提供一些提示,比如安装依赖,模块说明和运行结果等。

建议想要学习机器学习的同学一定要跟着本教程走下去。

下面就让我们开始第一天的学习,数据预处理的步骤如下:

第0步:安装依赖

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请自行百度安装哦~

如果你用Python的目的是数据分析,可以直接安装Anaconda。

准备输入命令安装依赖,如果你没有VSCode编辑器,Windows环境下打开 Cmd (开始-运行-CMD),苹果系统环境下请打开 Terminal (command+空格输入Terminal),如果你用的是VSCode编辑器或Pycharm,可以直接在下方的Terminal中输入命令:

pip install numpy
pip install pandas
pip install scikit-learn

第1步:导入库

导入我们刚刚安装的几个依赖:

import numpy as np
import pandas as pd


第2步:导入数据集

这一步将通过pandas导入我们的数据集,请注意数据集文件要在运行python的当前目录下:

dataset = pd.read_csv('Data.csv')//读取csv文件
X = dataset.iloc[ : , :-1].values//.iloc[行,列]
Y = dataset.iloc[ : , 3].values // : 全部行 or 列;[a]第a行 or 列
                                 // [a,b,c]第 a,b,c 行 or 列
print("Step 2: Importing dataset")
print("X")
print(X)
print("Y")
print(Y)

今天的数据集和源代码你可以在下方链接中下载本系列全部代码和数据:

https://pythondict.com/download/100-days-of-ml-code/ 

第3步:处理丢失数据

使用sklearn的内置方法Imputer,可以将丢失的数据用特定的方法补全。

这里我们使用整列的平均值来替换:

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])
print("---------------------")
print("Step 3: Handling the missing data")
print("step2")
print("X")
print(X)

第4步:解析分类数据

从第3步的输出结果中我们可以看到分类数据Y中有很多"Yes"/"No"之类的字符标签,X中有很多国家的字符名称比如"France" , "Spain",这些字符对于计算机而言,并不符合计算要求。

因此为了让机器方便进行数学计算,我们需要将其解析成数字:

#Step 4: 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()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
print("---------------------")
print("Step 4: Encoding categorical data")
print("X")
print(X)
print("Y")
print(Y)

第5步:拆分数据集为训练集合和测试集合

我们知道,为了让机器学习到分类的特征,我们需要先“训练”机器,这时候就需要训练集。训练结束后需要测试刚训练得到的模型的效果,因此又需要测试集。

为了实现这个目的,将刚获得的数据集进行拆分,其中20%为测试集,80%为训练集。使用sklearn的train_test_split可以很容易做到:

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)

第6步:特征缩放

如第4步的结果显示,数据集中存在一些值比如[4000, 6000, 10000, 100], 这样会导致一个问题:大部分模型使用欧式距离进行计算:

因此越大的值,权重越大,但是在我们正常的应用范围中,不论这个值多大,它的权重都应该是相同的,这时候就需要引入StandardScaler进行数据标准化了:

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

将数据特征标准化后,每个数据的权重都是相同的,这样进行计算的时候才是最准确的。

做完数据标准化这一步后,就可以进行模型的训练了,不过不用着急,请大家把今天的这些内容都敲一遍,学习透彻后,我们再进入下一天的学习。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注AI派哦。

文末福利


各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。


这个是一份Python代码速查表



下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图



怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐
一定要备注【高清图】哦
????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦
来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值