第1步:导入需要的库
Numpy
:包含数学计算函数
Pandas
:用于导入和管理数据集
import numpy as np
import pandas as pd
第2步:导入数据集
数据集通常是.csv
格式文件。CSV文件以文本形式保存表格数据,文件的每一行是一条数据记录。我们使用Pandas的read_csv()
方法读取本地CSV文件为一个数据帧(数据框)。然后,从数据帧中制作自变量和因变量的矩阵和向量。
dataSet = pd.read_csv('100-Days-Of-ML-Code-master\datasets\Data.csv')
X = dataSet.iloc[:, :-1].values # 提取所有特征
Y = dataSet.iloc[:, 3].values # 提取标签
第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])
第4步:解析分类数据
分类数据指的是含有标签值而不是数字值的变量,取值范围固定。例如Yes和No,这些不能用于数学计算,所以我们需要将他们转换为数字,借助sklearn.preprocessing
库中的LabelEncoder
类。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelEncoder_X = LabelEncoder()
X[:, 0] = labelEncoder_X.fit_transform(X[:, 0])
# 采用one-hot,对特征的标签数据进行编码
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
# 将类别标签Yes和No转换为0-1变量
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
第5步:拆分数据集为训练集和测试集
两者比例一般是80:20,借助sklearn.model_selection
库中的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)
第6步:特征缩放
有些特征的幅度、单位和范围有很大的差异,因此需要对特征进行标准化或Z-Score值归一化。
标准化(Z-Score),或者去除均值和方差缩放
Z-Score归一化:借助sklearn.preprocessing
库中的StandardScalar
类。公式为:(X-mean)/std 计算时对每个属性/每列分别进行。将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
将属性缩放到一个指定范围
将属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现
正则化(Normalization)
该方法主要应用于文本分类和聚类