机器学习—数据预处理

数据预处理

在机器学习中,我们第一步要做的工作是数据预处理工作。
这里就会用到两个库,一个是numpy库还有一个是pandas库。

import numpy as np
import pandas as pd

导入了这两个库以后,用Pandas来读取CSV文件(常用的数据存储文件)。
并将自变量以及因变量区分开。

dataset = pd.read_csv('Data.csv')//读取csv文件
X = dataset.iloc[ : , :-1].values//.iloc[行,列]
Y = dataset.iloc[ : , 3].values  // : 全部行 or 列;[a]第a行 or// [a,b,c]第 a,b,c 行 or

通常,我们的数据都是不完整的,因此我们需要用到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])

随后,我们要处理一下类别数据,转化为可以量化的变量,这里需要用到sklearn.preprocessing的LabelEncoder, 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)

随后,拆分训练集和测试集,用到sklearn.cross_validation里面的train_test_split。

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

最后,量化特征,因为某些自变量的变换范围可能特别大,那么再计算特征空间的时候,该变量占的权重就特别大,因此我们要对数据进行归一化处理,用到from sklearn.preprocessing 里的StandardScaler,来达到去中心化的目的。

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
# 注意在这里用了X_train的数据来对测试集进行归一化
X_test = sc_X.transform(X_test)

总结,数据预处理的一般步骤:
读取数据——补充缺失数据——转换类别变量(独热编码)——划分训练集以及测试集——数据归一化。

发布了12 篇原创文章 · 获赞 20 · 访问量 3169

猜你喜欢

转载自blog.csdn.net/weixin_43208423/article/details/105454049