首页 > 其他分享 >关于sklearn中StandardScaler的使用方式

关于sklearn中StandardScaler的使用方式

时间:2023-03-10 15:55:16浏览次数:40  
标签:scaler fit 标准化 transform 关于 1.22474487 StandardScaler sklearn

在机器学习中经常会使用StandardScaler进行数据归一化,注意一旦调整好StandardScaler以后就保存下来,后面如果进行测试单个时,可以进行加载并对其进行标准化

StandardScaler 是一种常用的数据标准化方法,用于将数据转换为均值为 0,标准差为 1 的标准正态分布。

标准化过程如下:

  1. 计算原始数据的均值 mean 和标准差 std

  2. 对原始数据进行标准化处理,即对每个数据点减去均值,再除以标准差

在 StandardScaler 中,均值和标准差的计算分别基于训练数据的样本,可以使用 fit 方法计算均值和标准差。然后,使用 transform 方法将数据标准化为标准正态分布。

注意

from sklearn.preprocessing import StandardScaler
import numpy as np

# 创建一个 3 x 2 的矩阵
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 StandardScaler 对象
scaler = StandardScaler()

# 计算均值和标准差
scaler.fit(X)

# 将数据标准化为标准正态分布
X_scaled = scaler.transform(X)

# 打印结果
print("原始数据:\n", X)
print("均值:", scaler.mean_)
print("标准差:", scaler.scale_)
print("标准化后的数据:\n", X_scaled)

输出结果为:

原始数据:
 [[1 2]
  [3 4]
  [5 6]]
均值: [3. 4.]
标准差: [1.63299316 1.63299316]
标准化后的数据:
 [[-1.22474487 -1.22474487]
  [ 0.          0.        ]
  [ 1.22474487  1.22474487]]

在上面的代码中,我们首先创建了一个 3 x 2 的矩阵 X,然后创建了一个 StandardScaler 对象 scaler。通过调用 fit 方法计算了均值和标准差,并通过调用 transform 方法将原始数据标准化为标准正态分布。最后,我们打印了原始数据、均值、标准差和标准化后的数据。

使用 Python 内置的 pickle 模块保存 StandardScaler 对象

要注意fit_transformfit + transform 的区别在于

  • fit_transform 是一个组合方法,它将拟合数据和转换数据这两个步骤合并到一个方法中。它首先拟合数据,然后应用相同的拟合参数转换数据。在使用 fit_transform 方法时,你只需在训练集上调用一次,就可以同时进行拟合和转换,这样能够节省时间和代码。

  • fittransform 是单独的方法。fit 方法用于从数据中学习模型参数,例如,对于 StandardScaler,它计算并保存数据集的均值和标准差。transform 方法用于使用已学习的模型参数来转换数据。通常,你会在训练集上调用 fit 方法来拟合模型,并在训练集和测试集上分别调用 transform 方法来转换数据。

在使用机器学习算法时,通常将数据集分成训练集和测试集。通常情况下,我们只使用训练集拟合模型并保存模型,然后使用已保存的模型在测试集上转换数据。因此,在训练集上使用 fit_transform 方法,而在测试集上使用 transform 方法。

下面是一个示例,说明如何使用 fit_transform 方法和 fit + transform 方法对数据进行标准化:

from sklearn.preprocessing import StandardScaler
import numpy as np

# 创建一个 3 x 2 的矩阵
X = np.array([[1, 2], [3, 4], [5, 6]])

# 使用 fit_transform 方法标准化数据
scaler = StandardScaler()
X_scaled1 = scaler.fit_transform(X)

# 使用 fit 和 transform 方法标准化数据
scaler = StandardScaler()
scaler.fit(X)
X_scaled2 = scaler.transform(X)

# 打印结果
print("使用 fit_transform 方法标准化的结果:\n", X_scaled1)
print("使用 fit 和 transform 方法标准化的结果:\n", X_scaled2)

输出为:

使用 fit_transform 方法标准化的结果:
 [[-1.22474487 -1.22474487]
  [ 0.          0.        ]
  [ 1.22474487  1.22474487]]
使用 fit 和 transform 方法标准化的结果:
 [[-1.22474487 -1.22474487]
  [ 0.          0.        ]
  [ 1.22474487  1.22474487]]

 

标签:scaler,fit,标准化,transform,关于,1.22474487,StandardScaler,sklearn
From: https://www.cnblogs.com/chentiao/p/17203643.html

相关文章

  • 关于文件IO缓冲区的思考
    关于文件IO缓冲区的思考问题的提出:关于我在实现socket的时候,有一个打印的问题一直在困扰我:我的程序具体的实现功能是:写一个客户端和服务器,客户端写入数据,服务器打印出来......
  • 了解以下RFID(关于我Android端竞赛方面的)
    射频识别(RFID)是RadioFrequencyIdentification的缩写。无线射频识别即射频识别技术(RadioFrequencyIdentification,RFID),是自动识别技术的一种,通过无线射频方式进行非接......
  • 关于使用webstorm的自定义代码模板
    将需要作为模板的代码复制下来点击“file“→settings”→“Editor”→“LiveTemplates(动态模板)”选择“vue”点击“+”选择“LiveTemplate”将Abbreviation(缩写)中内容改......
  • 关于JAVA泛型数组类型擦除引发的问题及解决方案
    先看如下一个DEMO示例代码:(其中doBatchGet被子类重写了1次)publicabstractclassBaseDemoService<T>{publicStringbatchGet(T...ints){Tone=ints[......
  • 关于泰勒应该展开多少项问题
    对于这题知道极限存在,求参数上下都是无穷,洛必达,或者等价都行关于泰勒首先泰勒是展开上下同次幂,这里却不知道b为多少次那么就要使得分子的同次幂相减为不为零就行......
  • 关于在SSM项目中使用mybatis-plus时控制台出现was not registered for synchronizatio
    1.出现这个问题可能会出现事务不同步的问题导致无法进行数据库的连接。可以在service层中添加@Tranational注解2.这里我解决是添加配置文件log4j的配置文件查看是数据库连......
  • 关于OV5640的重要寄存器配置问题
    最近在做ZYNQ的图像处理的学习,一直用的导入图片的方式进行了,现在想用摄像头试试真实的情况,总结一下几个重要寄存器的配置问题最重要的当然输出的图像分辨率,下面是输出图......
  • <Erlang> 关于 long-running(长运行) NIF 函数的研究(一)
      近期对Erlang的NIF函数进行先期的学习和预研,在观看API文档时看到了NIF函数会抢占Erlang虚拟机调度器线程的问题,导致其它Erlang进程无法正常使用调度器线程,由此阻塞系......
  • <Erlang> 关于 long-running(长运行) NIF 函数的研究(二)
    关于脏NIF函数需要知道的一些知识默认情况下,虚拟机给你N个脏CPU调度器,其中N是正常调度器的数量。正常调度器的数量默认为系统上配置的逻辑处理器的数量。不指定脏调度器......
  • <Erlang> 关于 long-running(长运行) NIF 函数的研究(三)
    使用底层操作系统的线程解决长NIF函数问题  Erlang运行时使用普通调度器线程来运行Erlang函数和普通NIF函数,通过脏调度器运行脏NIF函数,除了这两种方式外,你还可以使用eni......