scikit-learn构建模型—转换器处理数据

本文介绍了如何使用scikit-learn库进行数据预处理,包括利用model_selection模块划分训练集和测试集,preprocessing模块的转换器进行数据标准化、归一化、二值化以及PCA降维等操作。特别提到了如MinMaxScaler、StandarScaler、Normalizer和OneHotEncoder等工具在数据处理中的应用,并展示了在breast_cancer数据集上的PCA降维实践。
摘要由CSDN通过智能技术生成

       sklearn提供了model_selection模型选择模块、preprocessing数据预处理模块与decompisition特征分解模块;通过这三个模块,可以实现数据预处理与模型构建前的数据标准化、二值化、数据集分割、交叉验证和PCA降维等。

        (1)加载datasets中的数据集

        datasets加载数据集后,可以视为一个字典,几乎所有的数据集均可使用data,target,feature_names,DESCR分别获取数据集的数据,标签,特征名称,描述信息。

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print('breast_cancer数据集的长度为:',len(cancer))
print('breast_cancer数据集的类型为:',type(cancer))

cancer_data = cancer['data']
print('breast_cancer数据集的数据为:','\n',cancer_data)
cancer_target = cancer['target'] ## 取出数据集的标签
print('breast_cancer数据集的标签为:\n',cancer_target)
cancer_names = cancer['feature_names'] ## 取出数据集的特征名
print('breast_cancer数据集的特征名为:\n',cancer_names)
cancer_desc = cancer['DESCR'] ## 取出数据集的描述信息
print('breast_cancer数据集的描述信息为:\n',cancer_desc)

print('原始数据集数据的形状为:',cancer_data.shape)
print('原始数据集标签的形状为:',cancer_target.shape)

(2)将数据集划分为训练集和测试集

        sklearn的model_selection模块提供了train_test_split(*arrays,**options)函数对数据集进行分割。

from sklearn.model_selection import train_test_split
cancer_data_train, cancer_data_test,cancer_target_train, cancer_target_test = \
train_test_split(cancer_data, cancer_target, test_size=0.2, random_state=42)
print('训练集数据的形状为:',cancer_data_train.shape)
print('训练集标签的形状为:',cancer_target_train.shape)
print('测试集数据的形状为:',cancer_data_test.shape)
print('测试集标签的形状为:',cancer_target_test.shape)

(3)使用sklearn转换器进行数据预处理和降维

        为实现大量特征处理,sklearn将相关功能封装为转换器。主要包括3部分:fit,transform,fit_transform。目前,使用sklearn转换器可实现对传入的numpy数组进行标准化处理、归一化处理、二值化处理、PCA降维等。以下为对cancer数据集进行离差标准化:

import numpy as np
from sklearn.preprocessing import MinMaxScaler
Scaler = MinMaxScaler().fit(cancer_data_train)           ##生成规则
cancer_trainScaler = Scaler.transform(cancer_data_train) ##将规则应用于训练集
cancer_testScaler = Scaler.transform(cancer_data_test)   ##将规则应用于测试集
print('离差标准化前训练集数据的最小值为:',np.min(cancer_data_train))
print('离差标准化后训练集数据的最小值为:',np.min(cancer_trainScaler))
print('离差标准化前训练集数据的最大值为:',np.max(cancer_data_train))
print('离差标准化后训练集数据的最大值为:',np.max(cancer_trainScaler))
print('离差标准化前测试集数据的最小值为:',np.min(cancer_data_test))
print('离差标准化后测试集数据的最小值为:',np.min(cancer_testScaler))
print('离差标准化前测试集数据的最大值为:',np.max(cancer_data_test))
print('离差标准化后测试集数据的最大值为:',np.max(cancer_testScaler))

        离差标准化后,训练集的最大值最小值限定在[0,1]之间,同时测试集应用了训练集的离差标准化规则,数据超出了[0,1],除了离差标准化函数MinMaxScaler之外,还提供了一系列预处理函数:

        StandarScaler:对特征进行标准差标准化;Normalizer:对特征进行归一化; OneHotEncoder :对定性特征进行独热编码;

        除了基本特征变化函数,还提供了降维算法、特征选择算法、均通过转换器的方式实现,对breast_cancer数据集进行PCA降维,代码如下:

from sklearn.decomposition import PCA
pca_model = PCA(n_components=10).fit(cancer_trainScaler)  ##生成规则
cancer_trainPca = pca_model.transform(cancer_trainScaler) ##将规则应用于训练集
cancer_testPca = pca_model.transform(cancer_testScaler)   ##将规则应用于测试集
print('PCA降维前训练集数据的形状为:',cancer_trainScaler.shape)
print('PCA降维后训练集数据的形状为:',cancer_trainPca.shape)
print('PCA降维前测试集数据的形状为:',cancer_testScaler.shape)
print('PCA降维后测试集数据的形状为:',cancer_testPca.shape)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值