sklearn库中数据预处理函数fit_transform()和transform()的区别--01

2023-11-08

# coding=utf-8

from sklearn import preprocessing
import numpy as np
from sklearn.preprocessing import StandardScaler

'''
    StandardScaler 类   
        预处理对象
        
        fit() 预处理的数据,计算矩阵列均值和列标准差
        transform(data) 得到标准化的矩阵  ,用此方法,必须使用fit先进行预处理计算均值和标准差
            然后用fit计算的均值和标准差,进行标准化处理  {x_i - u}/标准差
        fit_transform(data) 相当于是fit和transform的组合
'''

data = np.array([[0., 0.],
                 [0., 0.],
                 [1., 1.],
                 [1., 1.]])


scaler = StandardScaler()

print(scaler.fit(data))

print('-----------')
print(scaler.mean_)
print(np.std(data,axis=0))
print('-----------')

print(scaler.transform(data))

print(scaler.fit_transform(data))

原文链接:https://blog.csdn.net/quiet_girl/article/details/72517053

敲《Python机器学习及实践》上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下:

 

涉及到这两个函数的代码如下:

 

[python] view plain copy

  1. # 从sklearn.preprocessing导入StandardScaler  
  2. from sklearn.preprocessing import StandardScaler  
  3. # 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导  
  4. ss = StandardScaler()  
  5. # fit_transform()先拟合数据,再标准化  
  6. X_train = ss.fit_transform(X_train)  
  7. # transform()数据标准化  
  8. X_test = ss.transform(X_test)  


我们先来看一下这两个函数的API以及参数含义:

 

1、fit_transform()函数

即fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式

2、transform()函数

即tranform()的作用是通过找中心和缩放等实现标准化

 

到了这里,我们似乎知道了两者的一些差别,就像名字上的不同,前者多了一个fit数据的步骤,那为什么在标准化数据的时候不适用fit_transform()函数呢?

原因如下:

为了数据归一化(使特征数据方差为1,均值为0),我们需要计算特征数据的均值μ和方差σ^2,再使用下面的公式进行归一化:

我们在训练集上调用fit_transform(),其实找到了均值μ和方差σ^2,即我们已经找到了转换规则,我们把这个规则利用在训练集上,同样,我们可以直接将其运用到测试集上(甚至交叉验证集),所以在测试集上的处理,我们只需要标准化数据而不需要再次拟合数据。用一幅图展示如下:

(图片来源:点击打开链接

 

 

 

 

 

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

sklearn库中数据预处理函数fit_transform()和transform()的区别--01 的相关文章

随机推荐

  • Ubuntu、fedora 11使用root帐户登陆

    由于Ubuntu root用户在默认情况下是禁用的 不允许用root登陆 而有很多时候的操作又需要有root用户的权限 要使用root帐户登陆 遵循以下步骤 1 首先设置root密码 利用现有管理员帐户登陆Ubutu 在终端执行命令 sud
  • 使用while循环计算斐波那契数列到N

    define CRT SECURE NO WARNINGS 1 include
  • 在Eclipse下建立Java的多层包Package

    一 操作前提 1 选择View Menu gt 选择Package Presentation gt 选择Hierarchial 2 每次创建包 都要取消勾选 Create package info java 二 具体操作 1 在src文件中
  • java查看日志的基本命令tail,less以及查看本机IP,ifconfig

    查看日志的方式有很多 这里记录几个常用的tail和less命令 一 首先进入测试服务器 打开终端 ssh root xxxxxxxxx 运行上一步之后输入密码 我们可以通过 ssh copy id root xxxx命令来记住密码 以后登录
  • 第五届字节跳动青训营(寒假) - 后端练习题&官方答案

    收集自字节青训营官方账号多条动态 想知道青训营笔试题怎么考 快来这里看看练习题吧 Day1 选择题 1 Client 在使用 Https 协议访问网站进行通信的过程中 以下说法正确的是 A 只用到了对称加密技术 B 只用到了非对称加密技术
  • 乐观锁和悲观锁区别以及使用场景

    乐观锁和悲观锁是并发控制中两种不同的策略 用于解决多个线程或进程同时访问和修改共享数据时可能出现的并发问题 悲观锁 悲观锁的基本思想是 在数据被访问时 假设会有其他的线程或进程也会访问这个数据 所以在访问数据之前 先对数据进行加锁 确保只有
  • CHFS数据区县码

    CHFS数据区县码 最全版本 CHFS数据区县码 最全版本 CHFS数据区县码 2011 2019年 仅在2013和2015年缺失96个观测值 其他年份均完整 数据真实可用 保质保量 好评初潮 拍下即发货 CHFS数据区县码 2011 20
  • Android产生JavaOOM 的几种场景

    1 堆内存溢出 2 没有连续的内存空间分配 这个主要是因为内存碎片过多 标记清除算法 导致即便内存够用 也会造成OOM 3 打开过多的文件 如果有碰到这个异常OOM open to many file的伙伴 应该就知道了 4 虚拟内存空间不
  • 从输入流一次返回一行的iterator

    VC6 x BCB4 x GCC295 o include
  • 服务器搭建centos7系统操作过程(使用系统盘搭建centos7系统)

    序言 1 一般新买的服务器会先查看一下系统的配置 组raid 组raid方法自己百度吧 也挺简单的 建议 大数据方向的话 系统盘两个盘 组raid1 数据盘超过两个以上组raid5 2 使用UltraISO刻录光盘教程可以自行百度 或者ht
  • openssh升级后无法登陆解决方案

    我的个人博客 逐步前行STEP 1 openssh升级后 终端登陆会提示 WARNING REMOTE HOST IDENTIFICATION HAS CHANGED 应该在终端的 ssh known hostswe文件中将服务器ip对应的
  • Ubuntu安装SourceInsight4

    1 下载 百度云盘 链接 https pan baidu com s 1htaCm4O 密码 ywi7 2 安装 1 安装wine sudo apt get install wine sudo apt get install wine st
  • Motion Classification and Target Tracking

    Target Tracking DT Temporal Difference Threshold T is about 15 of brightness for 255 level T 40 We can calculate speed f
  • 解决 Unable to negotiate with 192.21.5.163 port 98563: no matching host key type found. Their offer: s

    Windows系统配置git SSH协议 配置公钥啥的前置任务都完成了 克隆代码 遇到这么一个问题 Unable to negotiate with 192 21 5 163 port 98563 no matching host key
  • 如何在VS2019中配置OpenCV

    以下文章来源于 公 众 号开源电子网 读取更多技术文章 请扫码关注 如何在VS2019中配置OpenCV 1 下载OpenCV SDK 与安装 进入OpenCV官网 https opencv org 点击左上角Library 选择相应的版本
  • 【最新】django中使用websocket推送消息

    前言 在做Django项目时 有一个需求要推送消息到客户端 查阅网上资料后 发现有两种方法 一种使用dwebsocket 但是不兼容最新版django 2 1 5之后貌似都不行 第二种广泛使用的是channels 但网上教程参差不齐 阅读官
  • GCIG:提出防止开放互联网自毁路线图

    全球互联网治理委员会历时两年时间研究 日前正式发布研究报告 提出互联网在未来十年将走上三条发展路线之一 开放和全球性 不平等不平坦 走上毁灭之路 正确的发展之路在何方 大名鼎鼎的全球互联网治理委员会 GCIG 花了两年时间研究此课题 并于星
  • 关于微信小程序进行数据统计以及分析问题

    一款项目的发布和使用 开发者均希望能够得知自己开发的项目人群反响如何 一般的项目都会通过自己定义的方式与数据库连接进行记录与统计 如今微信小程序的流行 小程序的使用情况的反馈也是必不可少的 故而 微信也推出了相应的统计渠道 数据分析 小程序
  • HUAWEI视讯技术学习笔记

    一 平台介绍 业务管理 SMC2 0 网络控制 网络控制的核心 SC switch center 是视讯业务的交换控制中心 主要有地址解析 接入控制 带宽管理 呼叫管理等功能 SC的交换控制是基于视讯的两大通信协议H 323和SIP而言的
  • sklearn库中数据预处理函数fit_transform()和transform()的区别--01

    coding utf 8 from sklearn import preprocessing import numpy as np from sklearn preprocessing import StandardScaler Stand