数据预处理

Catalogue
  1. 导入需要的包
  2. 导入数据集
  3. 处理丢失数据集
  4. 解析分类数据
  5. 拆分数据集为测试集合和训练集合
  6. 特征缩放

导入需要的包

numpy, pandas

导入数据集

数据集通常为.csv格式.

使用Pandas的read_csv方法读取本地csv文件为一个数据帧。

然后,从数据帧中制作自变量和因变量的矩阵和向量。

处理丢失数据集

大多数据集是不完整的,为了不降低机器学习模型的性能,需要处理数据。

可以使用整列的平均值或中间值替换丢失的数据。我们使用sklean.preprocssing库中的Imputer类完成这项任务。

解析分类数据

分类数据指的是含有标签值而不是数字值的变量。取值范围通常是固定的。例如”Yes”和“No”.不能用于模型的数学计算,所以需要解析成数字。

为了实现这一功能,我们从sklearn.preprocesing库中导入LabelEncoder类。

拆分数据集为测试集合和训练集合

一般比例为80:20

导入sklearn.crossvalidation库中的train_test_split()方法。

特征缩放

大部分模型算法使用两点间的欧式距离表示,但此特征在幅度、单位和范围姿态问题上变化很大。

在距离计算中,高幅度的特征比低幅度特征权重更大。可用特征标准化或Z值归一化解决。

导入sklearn.preprocessing库中的StandardScalar类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#Day 1: Data Prepocessing

#Step 1: Importing the libraries
import numpy as np
import pandas as pd

#Step 2: Importing dataset
dataset = pd.read_csv('../datasets/Data.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values
print("Step 2: Importing dataset")
print("X")
print(X)
print("Y")
print(Y)

#Step 3: Handling the missing data
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)

#Step 4: Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
#Creating a dummy variable
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)

#Step 5: Splitting the datasets into training sets and Test sets
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)
print("---------------------")
print("Step 5: Splitting the datasets into training sets and Test sets")
print("X_train")
print(X_train)
print("X_test")
print(X_test)
print("Y_train")
print(Y_train)
print("Y_test")
print(Y_test)

#Step 6: Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
print("---------------------")
print("Step 6: Feature Scaling")
print("X_train")
print(X_train)
print("X_test")
print(X_test)