数智资源网
首页 首页 大数据 查看内容

使用scikit-learn对数据进行预处理

木马童年 2021-2-22 11:55 38 0

摘要:使用scikit-learn对数据进行预处理。 数据对于算法和模型的表现至关重要。原始数据中会包含各种各样的问题,我们在使用这些数据前要预先对这些问题进行处理。数据预处理的内容包括数据的清洗,如缺失值和零 ...

摘要:使用scikit-learn对数据进行预处理。

使用scikit-learn对数据进行预处理

数据对于算法和模型的表现至关重要。原始数据中会包含各种各样的问题,我们在使用这些数据前要预先对这些问题进行处理。数据预处理的内容包括数据的清洗,如缺失值和零值的填充,数据标准化,二值化和哑编码等等。本篇文章介绍如何使用sklearn中的数据预处理库(preprocessing)对数据进行标准化处理。

准备工作

开始前的准备工作包括三个部分,首先导入需要使用的库,这里包括常规的数值计算库numpy和pandas,用于数据预处理的preprocessing库,用于分割训练集和测试集的交叉检验库cross_validation。

#导入数值计算库 import numpy as np #导入科学计算库 import pandas as pd #导入数据预处理库 from sklearn import preprocessing #导入交叉验证库 from sklearn import cross_validation #导入缺失值填充库 from sklearn.preprocessing import Imputer

第二个准备工作是读取数据并创建数据表,通过查看可以发现数据表中存在缺失值NaN。

#读取并创建数据表 data=pd.DataFrame(pd.read_csv(p_data.csv)) #查看数据表 data.head() 使用scikit-learn对数据进行预处理

第三个准备工作是将数据表分解为特征值和目标值,并分割为训练集和测试集数据。在后面的数据处理和标准化过程中我们也将分别对训练集和测试集进行处理。

#设置特征值和目标值 X = np.array(data[[loan_amnt,grade,annual_inc]]) y = np.array(data[loan_status]) #将数据分割为训练集和测试集 X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.4, random_state=0) 填充缺失值

数据预处理的第一步是处理缺失值,这里使用sklearn中preprocessing库对数据表中的缺失值进行填充,在下面的代码中,missing_values的值可以为NaN,也可以为0。前者对缺失值填充,后者对0值进行填充。Strategy的值为填充的方式,这里使用均值mean填充缺失值。

#使用均值填充缺失值 imp = Imputer(missing_values="NaN", strategy=mean, axis=0) imp.fit(X_train) imp.transform(X_train)

以下是完成缺失值填充后的训练集数据。

#填充训练集 X_train=imp.transform(X_train) 使用scikit-learn对数据进行预处理

我们以同样的方式填充测试集,以保证测试集和训练集的数据填充方式保持一致。

#填充测试集 X_test=imp.transform(X_test) 使用scikit-learn对数据进行预处理 数据二值化

二值化是对特征的一种标准化处理,这里我们以数据表中的目标值为例进行说明。数据表中的目标值也就是贷款状态中还款的标记为大于200的数字,未还款的标记为小于200的数字。这里我们通过设置阈值对目标值进行二值化。下面的代码中threshold的值为设置的阈值,大于阈值的被标记为1,小于阈值则被标记为0。

#数据二值化,阈值200,大于阈值标记为1 binarizer = preprocessing.Binarizer(threshold=200)

#训练集二值化 y_train=binarizer.transform(y_train) 使用scikit-learn对数据进行预处理

#测试集二值化 y_test=binarizer.transform(y_test) 使用scikit-learn对数据进行预处理 数据标准化(Z-score)

数据的标准化(normalization)是将数据按比例缩放,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较。其中最典型的就是0-1标准化和Z标准化。在数据表中,用户贷款金额,年收入和等级是三个不同量级的数据。无法直接放在一起进行处理和分析。因此需要先进行标准化处理。 第一种标准化的方法是Z-score 标准化(zero-mean normalization) ,也叫标准差标准化,经过处理的数据符合均值为0,标准差为1的标准正态分布。下面是计算公式,其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

使用scikit-learn对数据进行预处理

数据预处理Preprocessing库中的StandardScaler()函数可以实现对数据的标准化处理,下面是具体的代码和结果。

#数据标准化 scaler = preprocessing.StandardScaler().fit(X_train)

#训练集数据标准化 scaler.transform(X_train) 使用scikit-learn对数据进行预处理

同时对测试集的数据进行标准化处理,以保证训练集和测试集的变换方式相同。

#测试集数据标准化 scaler.transform(X_test) 使用scikit-learn对数据进行预处理 范围缩放标准化(0-1 normalization)

第二种数据标准化的方法是0-1标准化(0-1 normalization) 或离差标准化,0-1标准化对原始数据的线性变换,使结果落到[0,1]区间。下面是计算公式,其中max为样本数据的最大值,min为样本数据的最小值。

使用scikit-learn对数据进行预处理

数据预处理preprocessing库中的MinMaxScaler()函数可以实现0-1标准化处理。下面是具体的代码和结果。

#范围缩放标准化 min_max_scaler = preprocessing.MinMaxScaler()

#训练集缩放标准化 min_max_scaler.fit_transform(X_train) 使用scikit-learn对数据进行预处理

#测试集缩放标准化 min_max_scaler.fit_transform(X_test) 使用scikit-learn对数据进行预处理 数据正则化

最后一种数据标准化的方法是正则化,下面是具体的代码和处理结果。

#数据正则化 normalizer = preprocessing.Normalizer().fit(X_train)

#训练集正则化 normalizer.transform(X_train) 使用scikit-learn对数据进行预处理

#测试集正则化 normalizer.transform(X_test) 使用scikit-learn对数据进行预处理 哑编码

哑编码是对分类特征进行标准化处理的一种方法,下面以sklearn官网上的一个例子来说明哑编码的过程。下面是一张分类特征表,表中包含三个特征和4条记录。

使用scikit-learn对数据进行预处理

我们将每个特征可能出现的结果以数字进行标识。例如男性标识为0,女性标识为1。

使用scikit-learn对数据进行预处理

完成标识后之前的分类特征表变成了下面的样子。Uid1的男性,欧洲,IE浏览器记录被对应的标记为了0,0,3。这些被标记的分类特征值不能直接使用,因为他们有可能被误认为是连续型特征。因此还需要一步OneHotEncoder转换。

使用scikit-learn对数据进行预处理

这里我们新增了一条男性,US,IE浏览器的记录,被标记为0,1,3。使用OneHotEncoder将条记录转换为哑编码。下面是具体的过程。首先在gender中,male=0,female=1,因此第一个数字0被转换为1,0,即男性。以此类推第二个数字1在country中被转换为0,1,0,。第三个数字3在browser中被标记为0,0,0,1。男性,US,IE浏览器的记录0,1,3通过OneHotEncoder转换为1,0,0,1,0,0,0,0,1。

使用scikit-learn对数据进行预处理 在sklearn的preprocessing库中使用OneHotEncoder()函数可以完成哑编码操作。下面是具体的代码,我们对0,1,3进行编码结果为1,0,0,1,0,0,0,0,1。

#哑编码 enc = preprocessing.OneHotEncoder()

enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) 使用scikit-learn对数据进行预处理

原始数据 数据预处理 数值计算 科学计算 数据处理
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...

小码哥李明杰Java版《恋上数据结构与算法》 ,资源教程下载

小码哥李明杰Java版《恋上数据结构与算法》 ,资源教

课程目录01-学前须知01-为什么要学习数据结构与算法02-编程语言的选择03-课程大纲04-…...

阿里云大数据分析师ACP认证视频教程下载

阿里云大数据分析师ACP认证视频教程下载

课程介绍阿里云大数据行业认证-大数据分析师认证(ACP-Alibaba Cloud Certified Prof…...

恋上数据结构与算法(第二季),视频教程下载

恋上数据结构与算法(第二季),视频教程下载

课程介绍:课程由MJ老师和名企算法大咖共同研发,在保证易懂的同时确保课程的系统全面…...

社交网络分析与挖掘,视频教程下载

社交网络分析与挖掘,视频教程下载

课程介绍:社交网络和数据挖掘是计算机学科相关研究中的热点,其具体研究涵盖理论、关…...