小言_互联网的博客

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

444人阅读  评论(0)

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

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

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

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

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

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

第0步:安装依赖

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。

如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

此外,推荐大家用VSCode编辑器:Python 编程的最好搭档—VSCode 详细指南

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


   
  1. pip install numpy
  2. pip install pandas
  3. pip install sklearn

第1步:导入库

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


   
  1. import numpy as np
  2. import pandas as pd


第2步:导入数据集

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


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

今天的数据集和源代码你可以在Python实用宝典公众号回复 机器学习1 下载。或者在下方链接中下载本系列全部代码和数据:

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

第3步:处理丢失数据

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

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


   
  1. from sklearn.preprocessing import Imputer
  2. imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
  3. imputer = imputer.fit(X[ : , 1: 3])
  4. X[ : , 1: 3] = imputer.transform(X[ : , 1: 3])
  5. print( "---------------------")
  6. print( "Step 3: Handling the missing data")
  7. print( "step2")
  8. print( "X")
  9. print(X)

第4步:解析分类数据

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

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


   
  1. #Step 4: Encoding categorical data
  2. from sklearn.preprocessing import LabelEncoder, OneHotEncoder
  3. labelencoder_X = LabelEncoder()
  4. X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
  5. # 创建虚拟变量
  6. onehotencoder = OneHotEncoder(categorical_features = [ 0])
  7. X = onehotencoder.fit_transform(X).toarray()
  8. labelencoder_Y = LabelEncoder()
  9. Y = labelencoder_Y.fit_transform(Y)
  10. print( "---------------------")
  11. print( "Step 4: Encoding categorical data")
  12. print( "X")
  13. print(X)
  14. print( "Y")
  15. print(Y)

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

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

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


   
  1. from sklearn.cross_validation import train_test_split
  2. 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进行数据标准化了:


   
  1. from sklearn.preprocessing import StandardScaler
  2. sc_X = StandardScaler()
  3. X_train = sc_X.fit_transform(X_train)
  4. X_test = sc_X.transform(X_test)

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

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

本系列教程也会在Python实用宝典网站中同步,网页端阅读更方便哦。点击下方阅读原文或访问链接可直达:
https://pythondict.com/python-tutorials/ml-first-day/ 

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

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典


转载:https://blog.csdn.net/u010751000/article/details/111829382
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场