Day1--Data Preprocessing

这是一个由Youtuber Siraj Raval发起的机器学习挑战活动,旨在号召大家每天至少花1个小时的时间在Machine Learning的学习上,内容涵盖了机器学习,深度学习等很多方面。

活动有Github链接,在量子位公众号的一篇文章里有对这个活动的详细描述。

同时GitHub上也有人在进行汉化,链接为https://github.com/MLEveryday/100-Days-Of-ML-Code

第一天数据预处理

第一步 导入需要的库

import numpy as np
import pandas as pd

 第二步 导入数据集

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

解析:pandas中pd.loc和pd.iloc的用法,具体可查看这里

pd.loc——通过行标签索引行数据 
pd.iloc——通过行号索引行数据 
pd.ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合) 

第三步 处理缺失数据

from sklean.preprocession  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])

解析:Imputer是sklearn中数据预处理的方法,主要是处理缺失值的,上述代码使用数组X去“训练”一个Imputer类,然后用该类的对象去处理数组Y中的缺失值,缺失值的处理方式是使用X中的均值(axis=0表示按列进行)代替Y中的缺失值。

官方文档在这:官方文档

具体用法可参考这里:博客

第4步:解析分类数据

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

解析:LabelEncoder是用来对分类型特征值进行编码,即对不连续的数值或文本进行编码,

OneHotEncoder,这种表示方式将每一个分类特征变量的m个可能的取值转变成m个二值特征,对于每一条数据这m个值中仅有一个特征值为1,其他的都为0。

具体用法可参看这里:博客

创建虚拟变量

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

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

from sklearn.model_selection 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步:特征缩放

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

解析:实用类StandarScaler,它可以在训练数据集上做了标准转换操作之后,把相同的转换应用到测试训练集中。

sklean中数据预处理方法总结:博客

猜你喜欢

转载自blog.csdn.net/abc_138/article/details/83242496