详解sklearn Preprocessing 数据预处理功能

 更新时间:2023年08月29日 10:25:36   作者:菜鸟Octopus  
这篇文章主要介绍了sklearn Preprocessing 数据预处理功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

 `scikit-learn`(或`sklearn`)的数据预处理模块提供了一系列用于处理和准备数据的工具。这些工具可以帮助你在将数据输入到机器学习模型之前对其进行预处理、清洗和转换。以下是一些常用的`sklearn.preprocessing`模块中的类和功能:

1. 数据缩放和中心化: 

 - `StandardScaler`: 将数据进行标准化,使得每个特征的均值为0,方差为1。 

 - `MinMaxScaler`: 将数据缩放到指定的最小值和最大值之间(通常是0到1)。

   - `RobustScaler`: 对数据进行缩放,可以抵抗异常值的影响。 

 - `MaxAbsScaler`: 将数据按特征的绝对值最大缩放。

2. 类别特征编码:   

- `LabelEncoder`: 将类别变量编码为整数标签。 

 - `OneHotEncoder`: 将类别变量转换为二进制编码的多个列。

3. 缺失值处理:

   - `SimpleImputer`: 使用均值、中位数、众数等填充缺失值。 

- `KNNImputer`: 使用最近邻的值来填充缺失值。

4. 数据变换: 

 - `PolynomialFeatures`: 通过创建多项式特征扩展特征空间。 

 - `FunctionTransformer`: 通过自定义函数对数据进行转换。

5. 数据分箱(Binning):

   - `KBinsDiscretizer`: 将连续特征分成离散的箱子。

6. 正则化: 

 - `Normalizer`: 对样本进行归一化,使其具有单位范数。

7. 特征选择:   

- `SelectKBest`: 基于统计测试选择排名前k个最好的特征。   - `RFE`(递归特征消除):逐步选择特征,通过迭代来识别最重要的特征。

8. 数据流水线(Pipeline): 

 - `Pipeline`: 将多个数据预处理步骤和模型训练步骤连接起来,以便更好地管理工作流程。

这些只是`sklearn.preprocessing`模块中提供的一些常见功能。你可以根据数据和问题的特点选择适合的预处理步骤来优化机器学习模型的性能。要使用这些工具,你需要首先安装`scikit-learn`库,并在代码中导入相应的类。

将每一列特征标准化为标准正太分布,注意,标准化是针对每一列而言的
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from matplotlib improt gridspec
import numpy as np
import matpotlib.pyplot as plt

 1)StandardScaler

cps = np.random.random_integers(0, 100, (100, 2))
# 创建StandardScaler 对象,再调用fit_transform 方法,传入一个格式的参数数据作为训练集.
ss = StandardScaler()
std_cps = ss.fit_transform(cps)
gs = gridspec.GridSpec(5,5)
fig = plt.figure()
ax1 = fig.add_subplot(gs[0:2, 1:4])
ax2 = fig.add_subplot(gs[3:5, 1:4])
ax1.scatter(cps[:, 0], cps[:, 1])
ax2.scatter(std_cps[:, 0], std_cps[:, 1])
plt.show()

2) MinMaxScaler

        MinMaxScaler:使得特征的分布在一个给定的最小值和最大值的范围内.一般情况下载0`1之间(为了对付哪些标准差相当小的特征并保留下稀疏数据中的0值.)

min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(x)

3)MaxAbsCaler

        MaxAbsScaler:数据会被规模化到-1`1之间,就是特征中,所有数据都会除以最大值,该方法对哪些已经中心化均值为0,或者稀疏的数据有意义.

max_abs_scaler = preprocessing.MaxAbsScaler()
x_train_maxsbs = max_abs_scaler.fit_transform(x)
x_train_maxsbs

4) 正则化Normalization

        正则化是将样本在向量空间模型上的一个转换,常常被使用在分类和聚类中,使用函数normalize实现一个单向量的正则化功能.正则化化有I1,I2等 

x_normalized = preprocessing.normalize(x, norm='l2')
print(x)

5) 二值化 

        特征的二值化(指将数值型的特征数据转换为布尔类型的值,使用实用类Binarizer),默认是根据0来二值化,大于0的都标记为1,小于等于0的都标记为0.通过设置threshold参数来更改该阈值

from sklearn import preprocessing
import numpy as np
# 创建一组特征数据,每一行表示一个样本,每一列表示一个特征
x = np.array([[1., -1., 2.],
              [2., 0., 0.],
              [0., 1., -1.]])
binarizer = preprocessing.Binarizer().fit(x)
binarizer.transform(x)
binarizer = preprocessing.Binarizer(threshold=1.5)
binarizer.transform(x)

6) 为类别特征编码 

from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])    # fit来学习编码
enc.transform([[0, 1, 3]]).toarray()    # 进行编码

7) 弥补缺失数据 

import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit domain name is for sale. Inquire now.([[1, 2], [np.nan, 3], [7, 6]])
x = [[np.nan, 2], [6, np.nan], [7, 6]]
imp.transform(x)

Imputer类同样也可以支持稀疏矩阵,以下例子将0作为了缺失值,为其补上均值

import scipy.sparse as sp
# 创建一个稀疏矩阵
x = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
imp = Imputer(missing_values=0, strategy='mean', verbose=0)
imp.fit domain name is for sale. Inquire now.(x)
x_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
imp.transform(x_test)

到此这篇关于sklearn Preprocessing 数据预处理功能的文章就介绍到这了,更多相关sklearn Preprocessing 数据预处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python PyQt5学习之样式设置详解

    Python PyQt5学习之样式设置详解

    这篇文章主要为大家详细介绍了Python PyQt5中样式设置的相关资料,例如为标签添加背景图片、为按钮添加背景图片、设置窗口透明等,感兴趣的可以学习一下
    2022-12-12
  • Python 常用模块 re 使用方法详解

    Python 常用模块 re 使用方法详解

    这篇文章主要介绍了Python 常用模块 re 使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python Django框架单元测试之文件上传测试示例

    Python Django框架单元测试之文件上传测试示例

    这篇文章主要介绍了Python Django框架单元测试之文件上传测试,结合实例形式分析了Django框架单元测试中文件上传测试的操作步骤与相关实现技巧,需要的朋友可以参考下
    2019-05-05
  • Python中实现插值法的示例详解

    Python中实现插值法的示例详解

    在数据处理和分析中,插值法是一种常用的数值分析技术,用于估计在已知数据点之间的值,本文将详细介绍Python中插值法的实现方法,需要的可以参考下
    2024-02-02
  • Python用sndhdr模块识别音频格式详解

    Python用sndhdr模块识别音频格式详解

    这篇文章主要介绍了Python用sndhdr模块识别音频格式详解,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python3基础之基本运算符概述

    Python3基础之基本运算符概述

    这篇文章主要介绍了Python3基础的基本运算符,非常重要的知识点,需要的朋友可以参考下
    2014-08-08
  • 一篇文章彻底弄懂Python字符编码

    一篇文章彻底弄懂Python字符编码

    这篇文章主要介绍了一篇文章彻底弄懂Python字符编码,各种常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战 ,下文详细介绍需要的小伙伴可以参考一下
    2022-03-03
  • Python3 入门教程 简单但比较不错

    Python3 入门教程 简单但比较不错

    Python已经是3.1版本了,与时俱进更新教程.2.5或2.6请看上一篇文章。
    2009-11-11
  • Python中Parser的超详细用法实例

    Python中Parser的超详细用法实例

    Parser模块为Python的内部解析器和字节码编译器提供了一个接口,该接口的主要目的是允许Python代码编辑Python表达式的分析树并从中创建可执行代码,这篇文章主要给大家介绍了关于Python中Parser超详细用法的相关资料,需要的朋友可以参考下
    2022-07-07
  • Python实现扫码工具的示例代码

    Python实现扫码工具的示例代码

    这篇文章主要介绍了Python实现扫码工具的示例代码,代码简单易懂对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10

最新评论