做者:Afroz Chakurepython
翻译:疯狂的技术宅git
原文:towardsdatascience.com/data-prepro…github
未经容许严禁转载算法
机器学习的核心是处理数据。你的机器学习工具应该与数据的质量同样好。本文涉及清理数据的各个步骤。你的数据须要通过几个步骤才能用于预测。dom
那么让咱们逐一学习这些步骤。机器学习
你先须要下载此数据集:Data.csv函数
每次咱们制做新模型时,都会要求导入 Numpy 和 Pandas。 Numpy 是一个包含数学函数的库,用于科学计算,而 Pandas 用于导入和管理数据集。工具
import pandas as pd
import numpy as np
复制代码
在这里咱们导入 pandas 和 Numpy 库并分别命名名 “pd” 和 “np”。性能
数据集以 .csv 格式提供。 CSV 文件以纯文本格式存储表格数据。该文件的每一行都是一个数据记录。咱们使用 pandas 库的 read_csv 方法将本地 CSV 文件读取为数据帧(dataframe)。学习
dataset = pd.read_csv('Data.csv')
复制代码
在仔细检查数据集以后,咱们将在数据集(X)中建立一个特征矩阵,并建立一个依赖向量(Y)及其各自的观察结果。咱们用 pandas 的 iloc (用于修复索引以进行选择)读取列,它包含两个参数 — [行选择,列选择]。
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 3].values
复制代码
咱们获得的数据不多是同质的。有时数据可能会丢失,因此须要对其进行处理,以避免下降机器学习模型的性能。
咱们须要用整列的 Mean 或 Median 替换缺失的数据。为此,咱们将使用 sklearn.preprocessing
库,其中包含一个名为 Imputer
的类,它将帮助咱们处理丢失的数据。
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
复制代码
咱们的对象名称是 imputer。 Imputer
类能够采用以下参数:
missing_values
都将被估算。咱们能够给它一个整数或 NaN
来查找缺失值。如今将 imputer
对象与咱们的数据相匹配。
imputer = imputer.fit(X[:, 1:3])
复制代码
接着用 transform
方法将缺失值替换为列的平均值。
X[:, 1:3] = imputer.transform(X[:, 1:3])
复制代码
任何非定量的变量都是分类的。例如头发颜色、性别、研究领域、大学就业、政治派别、疾病感染情况等。
咱们不能在模型的数学方程中使用“男性”和“女性”等值,所以须要将这些变量编码为数字。
为此,咱们从 sklearn.preprocessing
库导入 LabelEncoder
类,并建立 LabelEncoder
类的对象labelencoder_X
。以后在分类特征上使用 fit_transform
方法。
在编码以后,有必要区分同一列中的变量,为此咱们将使用 sklearn.preprocessing
库中的 OneHotEncoder
类。
独热编码将分类特征转换为更适合分类和回归算法的格式。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
复制代码
如今咱们将数据分红两组,一组用于训练模型,称为训练集,另外一组用于测试模型的性能,称为测试集。它们的比例一般是 80/20。为此,咱们导入 sklearn.model_selection
库的 train_test_split
方法。
from sklearn.model_selection import train_test_split
复制代码
如今创建训练集和测试集,咱们将建立 4 套 ——
咱们将为它们分配 test_train_split
,它接受参数 arrays
(X和Y)test_size
(指定分割数据集的比率)。
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
复制代码
大多数机器学习算法在其计算中使用两个数据点之间的欧几里德距离。所以,高幅度特征在距离计算中的权重将比低幅度的特征更重。为了不这种功能,使用标准化或 Z-score 标准化。这是经过使用 StandardScaler
类 sklearn.preprocessing
来完成的。
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
复制代码
此外,咱们将转换 X_test
集合,同时须要适应并转换 X_train
集合。
转换函数将全部数据转换为相同的标准化比例。
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
复制代码
到此为止,你已经学习了数据预处理所涉及的基本步骤。
如今,你能够尝试在某些实际数据集上应用这些预处理技术。