sklearn.preprocessing模块介绍

news2024/11/13 10:33:26

数据预处理

Binarizer: 二值化

用于将数值特征二值化。它将特征值与给定的阈值进行比较,并将特征值转换为布尔值(0 或 1),取决于特征值是否超过阈值

Binarizer(*, threshold=0.0, copy=True)

参数:

  • threshold:指定阈值,默认为 0.0。特征值大于阈值的将被置为 1,小于或等于阈值的将被置为 0。
  • copy:是否创建输入数据的副本,默认为 True。
from sklearn.preprocessing import Binarizer
import numpy as np

# 创建带有数值特征的数据
X = np.array([[1.5], [2.7], [0.3]])

# 创建 Binarizer 对象
binarizer = Binarizer(threshold=1.0)

# 使用阈值对特征进行二值化
binary_data = binarizer.transform(X)

print(binary_data)

输出结果
在这里插入图片描述

MaxAbsScaler: 最大绝对值缩放

用于通过除以每个特征的最大绝对值来缩放数据,将数据的范围限制在 [-1, 1] 之间。它是一种无中心化的缩放方法,保留了数据的原始分布形状。
MaxAbsScaler 的特点是它保留了数据的原始分布形状,并将每个特征的值映射到 [-1, 1] 的范围内。这在某些情况下对于特征缩放非常有用,例如在稀疏数据或特征值有较大差异的情况下。

from sklearn.preprocessing import MaxAbsScaler
import numpy as np

# 创建带有数值特征的数据
X = np.array([[1, 5], [3, 4], [5, -6]])

# 创建 MaxAbsScaler 对象
scaler = MaxAbsScaler()

# 使用最大绝对值进行缩放
scaled_data = scaler.fit_transform(X)

print(scaled_data)

输出结果
在这里插入图片描述

MinMaxScaler: 最小-最大缩放

通过缩放数据将每个特征的值限定在给定的范围内,默认为 [0, 1]。它将每个特征的值映射到指定的范围内,保留了数据的原始分布形状
MinMaxScaler 的特点是它将数据的值映射到指定的范围内,并保留了数据的原始分布形状。这种缩放方法常用于需要将特征值限定在一定范围内的情况,例如神经网络训练或特征工程中的数据标准化处理

MinMaxScaler(feature_range=(0, 1), *, copy=True, clip=False)

参数介绍

  • feature_range:指定特征值的范围,默认为 [0, 1]
from sklearn.preprocessing import MinMaxScaler
import numpy as np

# 创建带有数值特征的数据
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 MinMaxScaler 对象
scaler = MinMaxScaler(feature_range=(0, 1))

# 使用最小值和最大值进行缩放
scaled_data = scaler.fit_transform(X)

print(scaled_data)

结果
在这里插入图片描述

Normalizer: 归一化

它的作用是将每个样本的特征向量转换为具有相同单位长度的向量。这意味着归一化后的每个样本都位于一个共同的单位球上,其欧几里得范数(L2范数)为1。

归一化是数据预处理的一种常见技术,特别适用于需要计算样本之间的相似性或距离的任务。通过归一化处理,可以消除特征之间的尺度差异,确保每个样本的特征向量具有相同的单位长度。这对于许多机器学习算法和模型是重要的,因为它可以改善算法的收敛性和性能。

归一化过程的原理是通过对特征向量的每个元素进行缩放,使得整个特征向量的范数等于1。在 Normalizer 中,有三种归一化的范数类型可供选择:L1范数归一化(norm=‘l1’)、L2范数归一化(norm=‘l2’)、Max范数归一化(norm=‘max’)

from sklearn.preprocessing import Normalizer
import numpy as np

# 创建带有数值特征的数据
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 Normalizer 对象
normalizer = Normalizer(norm='l2')

# 对输入数据进行归一化处理
normalized_data = normalizer.transform(X)

print(normalized_data)

StandardScaler: 标准化

用于对数据进行标准化处理。标准化是一种常见的数据预处理技术,旨在消除特征之间的尺度差异,使得数据的分布符合标准正态分布(均值为0,标准差为1)
标准化的原理是将数据进行中心化(去均值)和缩放为单位方差的过程。具体而言,对于每个特征,标准化将其值减去均值,然后除以标准差。这使得特征的值在整个数据集上具有零均值和单位方差,将数据的分布调整为标准正态分布。标准化后的数据具有更好的可比性和可解释性,并且适用于许多机器学习算法和模型。

StandardScaler(*, copy=True, with_mean=True, with_std=True)
  • with_mean:是否将数据中心化(去均值),默认为 True。
  • with_std:是否将数据缩放为单位方差,即除以标准差,默认为 True
from sklearn.preprocessing import StandardScaler
import numpy as np

# 创建带有数值特征的数据
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 StandardScaler 对象
scaler = StandardScaler()

# 对输入数据进行标准化处理
scaled_data = scaler.fit_transform(X)

print(scaled_data)

结果
在这里插入图片描述

QuantileTransformer: 分位数转换

RobustScaler: 鲁棒缩放

,用于对数据进行缩放和中心化处理。它通过对数据进行缩放和平移,使得数据在存在异常值的情况下能够更好地适应模型的训练

RobustScaler(
    *,
    with_centering=True,
    with_scaling=True,
    quantile_range=(25.0, 75.0),
    copy=True,
    unit_variance=False,
)

参数:

  • with_centering:指定是否进行中心化处理,默认为 True。
  • with_scaling:指定是否进行缩放处理,默认为 True。
  • quantile_range:指定缩放范围的分位数范围,默认为 (25.0, 75.0)。
from sklearn.preprocessing import RobustScaler
import numpy as np

# 创建示例数据
X = np.array([[1.0, 2.0, 3.0],
              [4.0, 6.0, 8.0],
              [10.0, 12.0, 14.0],
              [16.0, 18.0, 20.0]])

# 创建 RobustScaler 对象
scaler = RobustScaler()

# 对数据进行缩放和中心化处理
scaled_data = scaler.fit_transform(X)

print(scaled_data)

执行结果
在这里插入图片描述

PowerTransformer: 幂变换

KernelCenterer: 中心化数据

标签处理:

Binarizer: 标签二值化

同上

LabelBinarizer: 标签二进制化

用于将分类变量进行二进制编码。它将每个类别转换为一个二进制向量,其中只有一个元素为 1,表示该类别,其他元素为 0

from sklearn.preprocessing import LabelBinarizer

# 创建包含类别标签的数据
y = ['cat', 'dog', 'cat', 'bird']

# 创建 LabelBinarizer 对象
binarizer = LabelBinarizer()

# 对类别标签进行二进制编码
binary_labels = binarizer.fit_transform(y)

print(binary_labels)

执行结果
在这里插入图片描述

LabelEncoder: 标签编码

用于对分类变量进行整数编码。它将每个类别标签映射到一个整数,从 0 开始递增

from sklearn.preprocessing import LabelEncoder

# 创建包含类别标签的数据
y = ['cat', 'dog', 'cat', 'bird']

# 创建 LabelEncoder 对象
encoder = LabelEncoder()

# 对类别标签进行整数编码
encoded_labels = encoder.fit_transform(y)

print(encoded_labels)

执行结果
在这里插入图片描述

MultiLabelBinarizer: 多标签二进制化

,用于对多标签分类问题中的类别标签进行二进制编码。它将每个样本的类别标签转换为一个二进制向量,其中每个元素表示一个可能的类别,如果样本属于该类别,则对应元素为 1,否则为 0。

from sklearn.preprocessing import MultiLabelBinarizer

# 创建多标签分类问题的类别标签
y = [['cat', 'dog'], ['bird'], ['dog', 'bird']]

# 创建 MultiLabelBinarizer 对象
binarizer = MultiLabelBinarizer()

# 对类别标签进行二进制编码
binary_labels = binarizer.fit_transform(y)

print(binary_labels)

执行结果

在这里插入图片描述

数据变换:

FunctionTransformer: 自定义函数转换

KBinsDiscretizer: 定宽离散化

KernelPCA: 核主成分分析

LabelEncoder: 标签编码

MaxAbsScaler: 最大绝对值缩放

MinMaxScaler: 最小-最大缩放

Normalizer: 归一化

OneHotEncoder: 独热编码

用于对离散特征进行独热编码。它将每个离散特征的每个取值转换为一个二进制特征向量,其中只有一个元素为 1,表示该取值,其他元素为 0。

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 创建离散特征数据
X = np.array([['red', 'red', 'green'],
              ['blue', 'red', 'yellow'],
              ['green', 'yellow', 'blue']])

# 创建 OneHotEncoder 对象
encoder = OneHotEncoder()

# 对特征进行独热编码
encoded_features = encoder.fit_transform(X)

print(encoded_features.toarray())

执行结果
在这里插入图片描述

OrdinalEncoder: 有序编码

用于对离散特征进行序数编码。它将每个离散特征的每个取值映射为一个整数,从 0 开始递增。

from sklearn.preprocessing import OrdinalEncoder
import numpy as np

# 创建离散特征数据
X = np.array([['red', 'blue', 'green'],
              ['blue', 'red', 'yellow'],
              ['green', 'yellow', 'blue']])

# 创建 OrdinalEncoder 对象
encoder = OrdinalEncoder()

# 对特征进行序数编码
encoded_features = encoder.fit_transform(X)

print(encoded_features)

执行结果
在这里插入图片描述

ordinalEncoder与LabelEncoder区别

编码方式不同:
OrdinalEncoder 对每个特征的取值进行序数编码,将每个取值映射为一个整数。编码后的整数值的大小具有一定的顺序性,但不一定具有数值意义。
LabelEncoder 对每个类别标签进行整数编码,将每个类别标签映射为一个整数。编码后的整数值只是用来区分不同的类别,没有顺序或数值意义。
应用场景不同:
OrdinalEncoder 适用于处理多个离散特征的编码,每个特征的取值之间没有明确的类别关系,仅需将其映射为整数。
LabelEncoder 适用于处理单个分类变量的编码,其中类别之间没有明确的顺序关系。
处理方式不同:
OrdinalEncoder 适用于处理离散特征的编码,对于多个特征和多个类别标签,可以同时进行编码。
LabelEncoder 主要用于处理单个分类变量的编码,对于多个类别标签,需要对每个类别标签进行独立的编码。

PolynomialFeatures: 多项式特征生成

PowerTransformer: 幂变换

QuantileTransformer: 分位数转换

RobustScaler: 鲁棒缩放

StandardScaler: 标准化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AGI—从GPT和大型语言模型中汲取的经验教训

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

【计算机视觉 | 图像分类】arxiv 计算机视觉关于图像分类的学术速递(6月 29 日论文合集)

文章目录 一、分类|识别相关(12篇)1.1 Pseudo-Bag Mixup Augmentation for Multiple Instance Learning Based Whole Slide Image Classification1.2 Improving Primate Sounds Classification using Binary Presorting for Deep Learning1.3 Challenges of Zero-Shot Recognit…

万物分割SAM家族 越发壮大!HQ-SAM、FastSAM 和 FasterSAM(MobileSAM)

卧剿,6万字!30个方向130篇!CVPR 2023 最全 AIGC 论文!一口气读完。 1、(更高质量)Segment Anything in High Quality 最近的 Segment Anything Model (SAM) 代表了分割模型的一大飞跃,有强大的零…

从零实现深度学习框架——Seq2Seq机器翻译实战

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 💡系列文章完整目录: 👉点此👈 要深入理解…

【你哥电力电子】 THE BUCK-BOOST 升降压斩波电路2

BUCK-BOOST电路2 2023年1月30日 nige in Tongji University #elecEngeneer 上链 文章目录 BUCK-BOOST电路26. CCM非理想能量守恒平均分析6.1 CCM非理想大信号平均模型6.2 CCM等效大信号平均模型6.3 CCM的DC电路模型6.4 CCM的小信号线性电路模型6.5 CCM非理想小信号传递函数6.…

【SaaS】多租户系统设计

文章目录 多租户系统设计一、SaaS 的系统分级二、应用程序必须支持多租户三、数据隔离方案3.1、独立应用独立库3.2、同一个应用程序,每个租户一个库3.3、同一个应用程序,同一个数据库3.4、分片多租户 四、我们的模型选择4.1、开发实践4.2、元数据/配置驱…

vue路由传参+案例(使用mock模拟后端数据)

路由传参 跳转路由时,可以给路由对应的组件内传参 声明式导航 /path?参数名值 /path/值 —需要路由对象提前配置 path: ‘/path/:参数名’ 对应的页面组件接收传递过来的值 $route.query.参数名 $route.params.参数名 router/index.js import Vue from vue // 1. …

解析matlab的audioread()输入输出参数

目录 一、API简介 二、实验 1. matlab 2. C语言 一、API简介 链接如下: 读取音频文件 - MATLAB audioread- MathWorks 中国 也可以浏览最新的英文版API说明: 简单说明如下: 1. 读取wav格式的文件,会自动跳过44个字节的文件…

初识React/JSX/组件/state/受控组件

JSX 推荐使用小括号包裹jsx 使用函数创建组件 使用类创建组件 抽离组件 事件绑定 事件对象 有状态和无状态组件/state 抽离事件处理程序 表单元素 受控组件 多表单优化 非受控组件(了解即可)

vhost-net-原理-初始化流程-数据传输流程-vhost-net后端

文章目录 1.vhost net2.vhost-net的初始化流程vhost net设置vhost dev设置vhost vring设置 3.数据收发流程分析3.1 数据发送3.2 数据接收 4ioventfd和irqfd的通知机制4.1ioeventfdqemu侧kvm侧总体效果 4.2irqfdqemu侧kvm侧总体效果 参考: 1.vhost net 传统的virtio…

ChatGPT Plugins内幕、源码及案例实战(一)

ChatGPT Plugins内幕、源码及案例实战 6.1 ChatGPT Plugins的工作原理 本节主要跟大家谈ChatGPT的插件(Plugins),这个内容非常重要。现在很多企业级的开发,一般都会基于ChatGPT 插件进行一些服务的封装,相当于开发了一个代理(Agent),把一些服务或者API封装在里面,然后…

eclipse编辑器汉化;eclipse安装中文插件

eclipse IDE默认是英文环境,使用起来略微不便,汉化还是很有必要的;下面记录一下安装中文插件的过程: 文章目录 一、 选择安装包地址二、 在eclipse安装中文插件2.1 在线安装2.2 手动下载安装包2.3 导入到eclipse 三、汉化插件介绍 一、 选择安…

实例005 可以拉伸的菜单界面

实例说明 如果管理程序功能菜单非常多,而用户只使用一些常用菜单,这时,可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时,只需单击展开菜单,即可显示相应菜单功能。运行本例&#xf…

python matplotlib中colorbar的位置设置

colorbar单独设置一个轴对象,再对轴对象进行灵活设置 import numpy as np import matplotlib.pyplot as plt# 创建一个二维随机数组 data np.random.rand(10, 10)# 创建一个图形和一个子图 fig, ax plt.subplots()# 绘制热力图 heatmap ax.imshow(data, cmaphot…

在linux中快速安装Redis数据库

Redis中文网 点击该链接下载最5.0.4版本的Redis的压缩包 使用Xftp工具将Redis安装包上传到linux中 1.将压缩包解压到/opt目录下: tar -zxvf redis-5.0.4.tar.gz 2. 更新yun: sudo yum makecache fast 3.安装gcc: yum -y install gcc 4.安装完成通过输入 : gcc -v …

tiny tool - get_file_path_name_by_drop_file

文章目录 tiny tool - get_file_path_name_by_drop_file概述工程效果收获的知识点vs2022工程, 必须自己设置对话框可以接受文件的风格vs2022建立的工程, 默认是unicode编码, 设置剪贴板数据时, 必须要设置为unicode的格式, 否则剪切板中只有第一个字符工程主要实现END tiny too…

短信压力测试系统,支持自定义接口

短信压力测试系统,支持自定义接口 支持卡密充值,短信压力测试系统,解决一切骚扰电话,教程在压缩包里面 可多个服务器挂脚本分担压力,套了cdn导致无法正常执行脚本可以尝试添加白名单 这边建议使用MySQL方式 同服务器下直接配置…

MySQL生产环境高可用架构实战

分布式技术MongoDB 1. MySQL高可用集群介绍1.1 数据库主从架构与分库分表1.2 MySQL主从同步原理 2. 动手搭建MySQL主从集群2.1 基础环境搭建2.2 安装MySQL服务2.2.1 初始化MySQL2.2.2 启动mysql2.2.3 连接MySQL 2.3 搭建主从集群2.3.1 配置master主服务2.3.2 配置slave从服务主…

Radzen Blazor Studio 1.12 Crack

Radzen Blazor Studio 是一款桌面工具,使 开发人员 能够创建精美的商业 Blazor 应用程序。快速地。 开放技术栈 没有供应商锁定。生成的源代码是人类可读的,您可以使用免费工具构建它。 Radzen 由流行的开源技术 - ASP.NET Core、Blazor、Bootstrap 提供…

较少的分区也报错too many range table entries

问题现象 postgresql中update执行语句报错too many range table entries 源sql with t as (select id from LZLTAB where id8723 limit 100 ) update LZLTAB setSTATUS 00,FILE_ID null,DATE_UPDATED localtimestamp(0) where id in (select id from t)如果把update改写成…