sklearn中的归一化方法StandardScaler中的fit、transform和fit_transform

2023-11-04

StandardScaler类

常用的数据归一化方式:减去平均值,然后通过标准差映射到均至为0的空间内。系统会记录每个输入参数的平均数和标准差,以便数据可以还原。

sklearn.preprocessing.StandardScaler能够轻松的实现上述功能,得到的是一个均值为0,方差为1的正态分布的结果

其中包含的方法有:

  • fit(X[, y])Compute the mean and std to be used for later scaling.
    • 计算用于后续缩放的平均值和标准差
  • transform(X[, y, copy])Perform standardization by centering and scaling
    • 通过居中和缩放执行标准化
  • fit_transform(X[, y])Fit to data, then transform it.
    • 直接计算平均值和std,并执行转换
  • get_params([deep])Get parameters for this estimator.
    • 获取此估计器的参数
  • inverse_transform(X[, copy])Scale back the data to the original representation
    • 将数据缩小到原始表示
  • partial_fit(X[, y])Online computation of mean and std on X for later scaling.
    • 在线计算X上的平均值和标准值,以便以后缩放
  • set_params(**params)Set the parameters of this estimator.
    • 设置此估计器的参数

引入StandardScaler类:

from sklearn.preprocessing import StandardScaler

fit

使用fit函数可以计算数据的平均值和std,用于后续transformer,一般和transformer一起使用

transform

transform函数的作用是根据类中保存的均值和标准差,对数据进行变换
在使用transformer前要保证类中已保存了均值和标准差数据

fit_transform

fit_transform方法是fit和transform的结合,fit_transform(X_train) 意思是找出X_train的均值和标准差,并应用在X_train上
对于X_test,可以直接使用transform方法。因为此时StandardScaler已经保存了X_train的均值和标准差

使用方法

随机生成一组数据

import numpy as np

df_data = np.arange(20).reshape(4, 5)
print(df_data)
print(df_data[0])
print(df_data[:,0])

输出结果为

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
 
[0 1 2 3 4]

[ 0  5 10 15]

对比使用fit_transformer和分开使用fit、transform的结果

1、使用fit_transformer

scaler = StandardScaler()
train_data = df_data
data = scaler.fit_transform(train_data)
print(data)

结果

[[-1.34164079 -1.34164079 -1.34164079 -1.34164079 -1.34164079]
 [-0.4472136  -0.4472136  -0.4472136  -0.4472136  -0.4472136 ]
 [ 0.4472136   0.4472136   0.4472136   0.4472136   0.4472136 ]
 [ 1.34164079  1.34164079  1.34164079  1.34164079  1.34164079]]

2、分开使用fit、transform

scaler = StandardScaler()
train_data = df_data
scaler.fit(train_data)
data = scaler.transform(train_data)
print(data)

结果

[[-1.34164079 -1.34164079 -1.34164079 -1.34164079 -1.34164079]
 [-0.4472136  -0.4472136  -0.4472136  -0.4472136  -0.4472136 ]
 [ 0.4472136   0.4472136   0.4472136   0.4472136   0.4472136 ]
 [ 1.34164079  1.34164079  1.34164079  1.34164079  1.34164079]]
[[-1.41421356 -0.70710678  0.          0.70710678  1.41421356]]

探索fit_transformer的变换方式

1、只取第一行数据进行变换

scaler = StandardScaler()
train_data = df_data[0]
data = scaler.fit_transform(train_data.reshape(-1, 1)).reshape(1, 5)
print(data)

结果

[[-1.41421356 -0.70710678  0.          0.70710678  1.41421356]]

2、只取第一列数据进行变换(转置后取第一行)

scaler = StandardScaler()
train_data = df_data.T
train_data = train_data[0]
scaler.fit(train_data.reshape(-1, 1))
data = scaler.fit_transform(train_data.reshape(-1, 1)).reshape(4, 1)
print(data)

结果

[[-1.34164079]
 [-0.4472136 ]
 [ 0.4472136 ]
 [ 1.34164079]]

结论:在实验过程中,使用fit_transform时,需要将数据reshape(-1,1),即为一列数据;同时对比结果可知,fit_transformer对数据按列进行归一化(fit和transformer同理)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn中的归一化方法StandardScaler中的fit、transform和fit_transform 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 段错误(核心已转储)问题的分析方法

    问题现象 今天在研究linux kernel中typedef的用法时 写了一个程序test typedef c 内容如下 include
  • 什么是线路规程?

    今天在看串口驱动的时候遇到了一个概念线路规程 以前只知道规则 程序之类的这个概念还是头次听说 既然碰上了就好好研究一番 百度百科给出了定义 规程 简单说就是 规则 流程 所谓流程即为实现特定目标而采取的一系列前后相继的行动组合 也即多个活动
  • linux 使用Vi/Vim加密和解密文件

    在linux下使用vi vim可以很方便的对文件进行加密和解密的操作 加密 1 进到编辑模式 输入完内容后按ESC 然后输入 X 注意是大写的X 回车 X 2 这时系统提示让你输入密码 2次 3 保存退出 2 取消密码 1 通过vi打开文件
  • Python使用SQLAlchemy

    Python使用SQLAlchemy 1 安装SQLAlchemy 备注 本文适用于SQLAlchemy gt 2 0 安装SQLAlchemy pip install SQLAlchemy 安装pymysql pip install py
  • SciPy 用户指南

    1 介绍 1 1 SciPy Organization SciPy 被组织成涵盖不同科学计算领域的子包 这些总结在下表中 分包 描述 cluster 聚类算法 constants 物理和数学常数 fft 快速傅里叶变换 integrate
  • c++之模板

    目录 一 函数模板 1 函数模板的格式 2 函数模板用法举例 二 类模板 1 类模板的格式 2 类模板用法举例 在C 中涉及了一个新知识 模板 关于模板 它是代码复用的手段 是泛型编程的基础 这里会介绍函数模板和类模板两种 一 函数模板 函
  • Python matplotlib 画图窗口显示到gui或者控制台的方法

    我们再用Jupyter notebook ipython console qtconsole的时候 有的时候画图希望不弹出窗口 直接画在console里 又得时候有希望弹出窗口 因为console里太小了 那么我们可以用下面的命令 matp
  • Python画樱花树的代码

    不废话 直接上代码 import turtle import random def draw sakura branch len if branch len gt 3 if 8 lt branch len lt 12 if random r
  • 【概率论】离散型随机变量分布——伯努利分布、泊松分布

    先简单复习下之前的内容 离散型随机变量指的是随机变量X的取值是有限的 或无穷可列的 详细的解释可以参照这篇博文 https blog csdn net dengfangmei1216 article details 107526615 随机
  • CSDN-markdown编辑器使用

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 用它写博客 将会带来全新的体验哦 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列
  • 微信二次分享解决方案

    最近项目中开发需要在微信端二次分享分享H5页面 但是第一次分享的时候安卓没有问题 ios有时成功有时失败 并且二次分享的时候安卓还是没有问题 ios一次成功都没有 后来查阅文档搜索资料终于解决了 一下是解决资料内容 百度上自定义微信分享标题
  • Nmap网络扫描

    目录 预备知识 TCP与UDP 扫描的分类 nmap简介 实验目的 实验环境 实验步骤一 任务描述 安装Nmap 实验步骤二 任务描述 Zenmap基本应用 实验步骤三 任务三 nmap命令行的使用 预备知识 TCP与UDP TCP是一种面
  • SpringBoot+MyBits 调用mybatis-config.xml的方法

    SpringBoot MyBits 调用mybatis config xml的方法 在application properties中如做下调用 Mybatis mybatis config location classpath mybati
  • 已解决:Java环境变量配置后不生效

    一 问题 从jdk8升级到jdk11 配置JAVA HOME后 不生效 备注 jdk8是安装版 jdk11是解压版 二 解决办法 在环境变量Path中 删除下面的配置 C Program Files x86 Common Files Ora
  • Python 的reload()方法

    reload 函数将以前导入过的模块再加载一次 重新加载 reload 包括最初导入模块时应用的分析过程和初始化过程 这样就允许在不退出解释器的情况下重新加载已更改的Python模块 若干注意事项 1 如果模块在语法上是正确的 但在初始化过
  • 攻防世界_Crypto_sherlock

    攻防世界刷题记录Crypto篇 文章目录 攻防世界刷题记录Crypto篇 前言 解题步骤 1 筛选出文中的大写字母 2 借助Python处理字符串 总结 前言 继续高手进阶区题目 sherlock 咦 夏洛克 下载题目附件得到的是一个内容很
  • Docker root用户的pip使用方法

    Docker下root用户 pip install XX 显示pip命令不存在 原始目标 pip install XX pip install root user action ignore XX 要安装的包 参考 WARNING Runn
  • JavaScript中的正则表达式

    ECMAScript 通过RegExp类型来支持正则表达式 测试的方法 pattern test str 或 pattern exec str 其中str 是待匹配的字符串 pattern 是正则表达式 JavaScript 中的正则表达式
  • 找不到msvcp140.dll无法继续执行代码怎么解决?分享三个解决方法

    当你在运行某个程序或游戏时遇到msvcp140 dll缺失的错误提示 你可能会感到困惑和烦恼 在修复msvcp140 dll的过程中 我遇到了一些挑战 但最终成功解决了这个问题 以下是我总结的三个解决方法 希望能帮助你解决这个问题 找不到m
  • sklearn中的归一化方法StandardScaler中的fit、transform和fit_transform

    StandardScaler类 常用的数据归一化方式 减去平均值 然后通过标准差映射到均至为0的空间内 系统会记录每个输入参数的平均数和标准差 以便数据可以还原 sklearn preprocessing StandardScaler能够轻