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 的相关文章

随机推荐

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

    问题现象 今天在研究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能够轻