01-数据预处理【100-Days-Of-ML-Code】

学习地址,请点击此处

第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  # 提取标签

01-数据预处理【100-Days-Of-ML-Code】_第1张图片

第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)

该方法主要应用于文本分类和聚类

你可能感兴趣的:(MachineLearning)