机器学习数据预处理
DATA PREPROCESSING
step 1:导入必需包
首先,导入数据处理所需要的包,一般需要导入NumPy和Pandas ,用于导入和处理数据集。
import numpy as np
import pandas as pd
setp 2:导入数据
在导入包之后,需要导入数据,科学计算、数据处理一般使用csv格式,还有一些使用xls、xlsx格式。当数据量非常大时,一般使用数据库。在这里是使用Pandas包中的read_csv()方法读取csv数据格式。数据可以读取为数据框、矩阵、或者向量。
dataset = pd.read_csv("Data.csv")
X = dataset.iloc[:,:-1].values
Y = dataset.iloc[:,3].values
setp 3:处理错误值
在我们导入的数据中,有可能有一些错误值,空值,缺失值,这些都经常发生。我们使用sklearn.preprocessing 中的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])
setp 4:编码分类数据
分类数据不仅仅包括数值类型,还包括标签数据。比如yes and no,这在数学运算上是无法处理的,所以需要对其编码。在sklearn.preprocessing 中的 LabelEncoder类可以解决这个问题。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X=LabelEncoder()
X[ : ,0]=labelencoder_X.fit_transform(X[ : ,0])
setp 5:分割数据
我们需要把数据分割成两个部分,一部分用于训练模型,一部分用于验证模型。通常,我们用80%的数据训练模型,用20%的验证模型。使用sklearn.crossvalidation中train_test_split()方法。
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)
setp 6:特征缩放
很多机器学习算法都是使用欧式距离来计算两点之间的距离。更高的量纲在计算中比低的量纲更重,因此需要对数据进行特征缩放,通过归一化或者标准化。需要导入sklearn.preprocessing 中的StandardScalar类。
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)