sklearn.preprocessing中的标准化StandardScaler与scale的区别

news/2024/7/9 9:23:25 标签: sklearn, 人工智能, python

StandardScaler与scale

    • 1、标准化概述
    • 2、两种标准化的区别



1、标准化概述


标准化主要用于对样本数据在不同特征维度进行伸缩变换,目的是使得不同度量之间的特征具有可比性,同时不改变原始数据的分布

一些机器学习算法对输入数据的规模和量纲非常敏感,如果输入数据的特征之间存在数量级差异,可能会影响算法的准确性和性能

标准化处理的好处是我们在进行特征提取时,可以忽略不同特征之间由于噪声所导致的度量差异,而保留样本在各个维度上的信息分布,提高算法的准确性和性能,增加数据的可解释性

标准化的过程如下:

  • 计算数据列的算数平均值(mean)
  • 计算数据列的标准差/方差(std)
  • 对每个数据列分别进行转化:(X-mean)/std

sklearn.preprocessing提供了两种直接对给定数据进行标准化的方式:scale()函数和StandardScaler类,它们之间有什么区别呢?

2、两种标准化的区别


1)scale()函数

python">import numpy as np
from sklearn.preprocessing import scale, StandardScaler

# A、scale(X, axis)函数:axis:用来计算均值和标准差的轴,默认0,对每个特征进行标准化(列),1为对每个样本进行标准化(行)
# 样本数据
X = np.array([[1, -1, 2], [2, 1, 0]])
# 直接标准化处理
X_scaled = scale(X)
print(X_scaled)
'''
[[-1. -1.  1.]
 [ 1.  1. -1.]]
'''
# 处理后数据的均值和方差
print(X_scaled.mean(axis=0))    # [0. 0. 0.]
print(X_scaled.std(axis=0))     # [1. 1. 1.]

2)StandardScaler类

python"># B、StandardScaler类
ss = StandardScaler()
# 标准化处理,如果在训练集上进行标准化,同时可以使用保存在训练集中的参数(均值、方差)对测试集数据进行转化
X_scaled = ss.fit_transform(X)
print(X_scaled)
'''
[[-1. -1.  1.]
 [ 1.  1. -1.]]
'''
# 处理后数据的均值和方差
print(X_scaled.mean())    # 0.0
print(X_scaled.std())     # 1.0
# 使用训练集标准化后的均值和方差对测试集数据进行转换
print(ss.transform([[-1, 2, 0]]))
'''
[[-5.  2. -1.]]
'''

StandardScaler类与scale函数标准化的区别总结如下:

  • scale()函数:不能将原数据集(训练集)的均值和方差应用到新的数据集(测试集),如果使用全部样本,标准化计算的结果是训练集和测试集共同的期望和方差
  • StandardScaler类:可以将原数据集(训练集)的均值和方差应用到新的数据集(测试集),即假设训练集的期望和测试集的期望是一样的,测试集的标准化是用的训练集的期望和方差

在机器学习中,我们通常是从整体中以抽样的方式抽出训练集,这意味着我们默认这部分训练集可以代替整体,也就是训练集的期望就是整体的期望,测试集标准化时,它的期望采用的正是训练集的期望,所以StandardScaler类才是我们经常用的方式

更多关于StandardScaler类的使用见文章:传送门




http://www.niftyadmin.cn/n/5353561.html

相关文章

websocket 通信协议

websocket是什么 答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 意思就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息 属于服务器推送技术的一种. 为什么需要websocket? 疑问?…

禅道添加自定义字段

1&#xff0c;数据库表 zt_story 添加自定义字段 bakDate1&#xff0c;bakDate2&#xff0c;bakDate3&#xff0c;bakDate4 2&#xff0c;在 /opt/lampp/htdocs/zentaopms/extension/custom/story/ext/config 中添加bakDate.php文件 <?php $config->story->datatab…

Python实现时间序列分析AR定阶自回归模型(ar_select_order算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中&#xff0c;AR定阶自回归模型&#xff08;AR order selection&#xff09;是指确定自回…

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Windows…

bert提取词向量比较两文本相似度

使用 bert-base-chinese 预训练模型做词嵌入&#xff08;文本转向量&#xff09; 模型下载&#xff1a;bert预训练模型下载-CSDN博客 参考文章&#xff1a;使用bert提取词向量 下面这段代码是一个传入句子转为词向量的函数 from transformers import BertTokenizer, BertMod…

【Java】SSM入门开发流程总结

1.1 SSM整合流程 创建工程SSM整合 Spring SpringConfig MyBatis MybatisConfigJdbcConfigjdbc.properties SpringMVC ServletConfigSpringMvcConfig 功能模块 表与实体类dao&#xff08;接口自动代理&#xff09;service&#xff08;接口实现类&#xff09; 业务层接口测试&a…

Spring Cache简明教程

Spring Cache简明教程 引言什么是Spring Cache&#xff1f;核心特性应用场景如何工作 如何使用1. 添加依赖2. 启用缓存3. 配置缓存4. 使用缓存注解 使用缓存的注意事项缓存的数据序列化缓存键的生成缓存内容的一致性缓存的并发问题缓存穿透缓存雪崩缓存的存储容量方法的可见性和…

56-主,回调函数,回调函数的参数传参,函数和变量的公私有,特权方法,立即执行函数,闭包(解除引用)

1.回调函数 定义了函数,没有调用函数,但最终执行了。 <script>//回调函数// 定时器setInterval(function(){console.log("a")},1000)// 延迟器setTimeout(function(){console.log("a")},3000)</script> 2.将实参变为函数,将person方法作为…