sklearn中StandardScaler()
一、数学公式:
1.均值、去均值:
(1) 均值:对每个特征求均值,即对每列求均值。
import numpy as npdata = np.array([[1, 2], [4, 3]])
print('数组为:\n', data)
mean = data.mean(axis=0)
print('均值为:\n', mean)# 结果为
数组为:[[1 2][4 3]]
均值为:[2.5 2.5]
(2) 去均值:每个特征的值减去对应特征的均值。
move_mean = data-mean
print('去均值:\n', move_mean)# 结果为
去均值:[[-1.5 -0.5][ 1.5 0.5]]
2.标准差(标准偏差):
(1) 标准差:每个特征的值减去对应特征均值的平方和, 然后除以总值的数量,最后开根号。
std = np.std(data, axis=0)
print('标准差', std)# 结果为
标准差 [1.5 0.5]
3.标准分数:
(1) 标准分数:去均值除以标准差。
score = move_mean / std
print('标准分数: \n', score)# 结果为
标准分数: [[-1. -1.][ 1. 1.]]
二、理论:
1.中心化(零均值化):
(1) 功能:将整体数据平移,中心为(0, 0)。事实上,就是去均值。每个特征的值相加为0。(2) 目的:标准化的第一步。
2.缩放:
(1) 功能:事实上,就是去均值除以标准差进行缩放。(2) 目的:标准化的第二步。
3.标准化:
(1) 功能:将数据的分布转为正态分布。事实上,就是标准分数。标准化之后,每个特征的值变为均值为0,方差为1(2) 目的:将特征表现为标准正态分布数据(均值为0,方差为1)。如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器不能从其他特征中学习,从而降低精度。加快梯度下降求解的速度。
三、StandardScaler():
1.介绍:
先通过计算训练集中特征的均值、标准差,对每个特征进行独立居中和缩放。然后,将平均值和标准偏差存储起来,在以后的测试集上有相同比例来缩放。
2.参数:
(1) copy: boolean, 默认为True如果为False, 会尽量避免返回副本,并且直接在原数据上标准化。如果数据不是NumPy的数组或scipy.sparse的CSR矩阵,副本可能仍然被返回。(2) with_mean: boolean, 默认为True如果为True,会在缩放前对数据中心化。如果为False,平均值为0。如果输入稀疏矩阵,会引发异常。因为该矩阵中心化会建立密集矩阵,最终矩阵太大而无法保存。(3) with_std: boolean, 默认为True如果为True,将数据缩放到单位标准差。如果为False,标准差为1,还可以避免破坏数据的稀疏性。
3.属性:
(1) mean_:一维数组或None每个特征的均值。如果with_mean = False, 返回None。(2) var_:一维数组或None每个特征的方差,也为了计算scale_。如果with_std = False, 返回None。(3) scale_:一维数组或None每个特征的标准差,对var_开方获得。如果为with_std = False,返回None。
4.方法:
import numpy as np
from sklearn.preprocessing import StandardScaler'''
代码解释:声明两个标准缩放器。假设s1是对样本的所有特征标准化。假设s2是对样本的标记标准化。学习中遇到的问题:错误使用一个标准缩放器对特征和标记进行标准化。原因是,训练集的特征和标记必须按相同比例来缩放。(详解见上面的介绍)
'''s1 = StandardScaler()
s2 = StandardScaler()
(1) fit():1.功能:计算均值和标准差,用于以后的缩放。2.参数:X: 二维数组,形如(样本的数量,特征的数量)训练集(2) fit_transform():1.功能:先计算均值、标准差,再标准化2.参数:X: 二维数组3.代码和学习中遇到的问题:
'''
代码解释:使用二维数组来模拟特征,对其标准化。使用一维数组来模拟标记,对其标准化。学习中遇到的问题:错误输入一维数组给fit_transform()、transform()。原因是,标准化是对列操作的,一维数组每列中只有一个值,无法计算。解决是,通过reshape(-1, 1),将一维数组改为二维数组。
'''two_den_arr = np.array([[1, 2, 6], [4, 3, 8]])
one_den_arr = np.array([1, 5, 7])two_den_arr = s1.fit_transform(two_den_arr)
print('二维数组的数值标准化后:\n', two_den_arr)one_den_arr = s2.fit_transform(one_den_arr.reshape(-1, 1))
print('一维数组的数值标准化后:\n', one_den_arr)# 结果为:
二维数组的数值标准化后:[[-1. -1. -1.][ 1. 1. 1.]]
一维数组的数值标准化后:[[-1.33630621][ 0.26726124][ 1.06904497]]
(3) transform():1.功能:通过居中和缩放执行标准化。2.参数:X: 二维数组该数据沿着特征轴。3.代码:
'''
代码解释:使用已训练好的标准缩放器,缩放数据。
'''two_den_arr1 = np.array([[3, 5, 3], [8, 6, 1]])
one_den_arr1 = np.array([8, 3, 5])two_den_arr1 = s1.transform(two_den_arr1)
print('二维数组的数值标准化后:\n', two_den_arr1)one_den_arr1 = s2.transform(one_den_arr.reshape(-1, 1))
print('一维数组的数值标准化后:\n', one_den_arr1)# 结果为:
二维数组的数值标准化后:[[ 0.33333333 5. -4. ][ 3.66666667 7. -6. ]]
一维数组的数值标准化后:[[-2.27291236][-1.63005522][-1.30862664]]
(4) inverse_transform():1. 功能:将数据按比例恢复到以前的大小。2. 参数:X: 二维数组,形如(样本数量,特征数量)3.代码:
print('二维数组标准化还原后:\n', s1.inverse_transform(two_den_arr))print('一维数组标准化还原后:\n', s2.inverse_transform(one_den_arr).reshape(1, -1))# 结果为:
二维数组标准化还原后:[[1. 2. 6.][4. 3. 8.]]
一维数组标准化还原后:[[1. 5. 7.]]
sklearn中StandardScaler()相关推荐
- sklearn中分类器的比较
简 介: 运行对比了 分类器的比较? 中的sklearn中的分类的性能对比.这为我们理解机器学习中的特性提供了理解基础. 关键词: sklearn,python #mermaid-svg-UbOwlP ...
- Sklearn中的CV与KFold详解
关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...
- sklearn中的Pipline(流水线学习器)
简介 管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines). 管道机制(也有人翻译为流水线学习器?这样翻译可能更有利于后面内容的理解)在机 ...
- sklearn中的正则化
文章目录 L1和L2 L2正则化.岭回归 L1正则化.Lasso回归 弹性网络 提前停止 正则化是处理模拟过拟合最常用的方式之一.本部分我们介绍常见的正则化方法. L1和L2 Lasso回归的一个重要 ...
- sklearn中eof报错_sklearn中的数据预处理和特征工程
小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...
- sklearn中常用的数据预处理方法
常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal and Variance Scali ...
- sklearn中的逻辑回归
复习一下sklearn中的这些用法 给定一堆数据,并设置一个随机种子,让大家都能复现: import numpy as np import matplotlib.pyplot as pltnp.ran ...
- SKlearn中的函数学习总结(持续更新)
关于SKlearn中的函数学习及关键代码部分,会持续更新 (参考sklearn官方文档) 一:分类.回归 二:降维 三:模型评估与选择 四:数据预处理 五:模型保存 大类 小类 适用问题 实现文档 说 ...
- sklearn中的支持向量机SVM(下)
1 二分类SVC的进阶 1.1 SVC用于二分类的原理复习 sklearn中的支持向量机SVM(上) 1.2 参数C的理解进阶 有一些数据,可能是线性可分的,但在线性可分状况下训练准确率不能达到100 ...
最新文章
- 雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
- 数据库连接池为什么要用threadlocal呢?不用会怎样?
- 教育园报修系统_【务实活动】“充电”模式强力开启,务实幼教2019暑期小红巾生存教育大培训...
- python语言命令大全-Python常用命令之集合
- pcf8951 ad/da(iic)转换模块 在 esp8266下的实现
- ORACLE的所有字段类型
- 日语学习-多邻国-关卡1-家庭
- HDOJ 4005-The war解题报告
- Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
- leetcode 117. 填充每个节点的下一个右侧节点指针 II(Populating Next Right Pointers in Each Node II)...
- 华为 “OSPF” 认证配置
- 服务器 通知系统设计,组列表管理服务器的设计与实现
- matpower在matlab里面吗,matpower matlab 238万源代码下载- www.pudn.com
- 嵌入式linux触摸屏校正命令,[转]基于嵌入式Linux的通用触摸屏校准程序
- Excel 计算两个日期间相差的天数、月数或年数 DATEDIF函数
- python爬知识星球付费数据_Python 知识星球爬虫(一) 根据 topic comment 爬取数据...
- 5000在线的服务器选择,支持负载5000人10000人在线的服务器的配置及其网络要求!!...
- UVa 815 Flooded
- 如何使用谷歌浏览器进行Debug断点调试
- 电梯控制技术综合实训装置QY-DT721