sklearn基础及数据处理

sklearn 库整合了多种机器学习算法,可在数据分析过程快速建立模型。通过 pandas 库虽然已经提供数据合并、清洗、标准化(离差标准化、标准差标准化、小数定标标准化),为构建机器学习模型对数据特征还需处理更多预处操作,因此 sklearn 将相关预处理功能封装为统一接口 --- 转换器( Transformer )。使用 sklearn 转换器能够实现对传入的 NumPy 数组进行标准化处理、二值化、 PCA 将为等操作。

       说到转换数据,实际上 padas 库也有提供了哑变量处理类别数据、离散化连续数据等功能。这也是为什么仅学 SQL 无法完全替代的 pandas 功能的原因之一。但 sklearn 引入转换器能够对训练集和测试集操作能够更加方便统一。

       sklearn 也提供了便于学习的经典数据集,这些数据集类似字典方式存放。通过 ancanda中 Spyder 变量界面能够直观的看到这些数据及其值。通过这些数据我们也能领会数据分析之前对数据格式最终搞成什么样子。例如:数据( data )、标签( target )、特性( feature )等三个基本要素。后续训练集和测试的拆分及进行训练都离不开这些准备数据。

 

1、加载datasats数据集

如果需要加载某个数据集,则可以将对应的函数赋值给某个变量,再次强调数据集三要素:数据(data)、标签(target)、特性(feature)。如下面代码所示:

 

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer()##将数据集赋值给iris变量

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)

 

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

数据为什么要拆分?因为这是机器学习方法创新点。让计算思维来发掘数据内部的关联关系。这个方法不像传统的实验思维和理论思维。机器学习思路就是根据给定标签训练集来找出数据内在规律和关系。

sklearn 的 model_selection 模块提供了 train_test_split 函数,能够对数据集进行拆分。

 

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

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

 

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 转换器进行数据预处理和降维

为了消除特征之间量纲和取值范围差异可能会造成的影响需要对数据进行标准化处理,也叫做规范化处理。实际上规范化就是减少空间复杂度的过程,PCA降维对应于时间复杂度降低过程。

sklearn 的转换器主要包括 3 个方法: fit 、 transform 、 fit_transform 等。

 

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)

Scaler = MinMaxScaler().fit(cancer_data_test) ##生成规则

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

 

 

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)

你可能感兴趣的:(python数据分析)