一、数学公式:

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()相关推荐

  1. sklearn中分类器的比较

    简 介: 运行对比了 分类器的比较? 中的sklearn中的分类的性能对比.这为我们理解机器学习中的特性提供了理解基础. 关键词: sklearn,python #mermaid-svg-UbOwlP ...

  2. Sklearn中的CV与KFold详解

    关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...

  3. sklearn中的Pipline(流水线学习器)

    简介 管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines). 管道机制(也有人翻译为流水线学习器?这样翻译可能更有利于后面内容的理解)在机 ...

  4. sklearn中的正则化

    文章目录 L1和L2 L2正则化.岭回归 L1正则化.Lasso回归 弹性网络 提前停止 正则化是处理模拟过拟合最常用的方式之一.本部分我们介绍常见的正则化方法. L1和L2 Lasso回归的一个重要 ...

  5. sklearn中eof报错_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  6. sklearn中常用的数据预处理方法

    常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal and Variance Scali ...

  7. sklearn中的逻辑回归

    复习一下sklearn中的这些用法 给定一堆数据,并设置一个随机种子,让大家都能复现: import numpy as np import matplotlib.pyplot as pltnp.ran ...

  8. SKlearn中的函数学习总结(持续更新)

    关于SKlearn中的函数学习及关键代码部分,会持续更新 (参考sklearn官方文档) 一:分类.回归 二:降维 三:模型评估与选择 四:数据预处理 五:模型保存 大类 小类 适用问题 实现文档 说 ...

  9. sklearn中的支持向量机SVM(下)

    1 二分类SVC的进阶 1.1 SVC用于二分类的原理复习 sklearn中的支持向量机SVM(上) 1.2 参数C的理解进阶 有一些数据,可能是线性可分的,但在线性可分状况下训练准确率不能达到100 ...

最新文章

  1. 雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
  2. 数据库连接池为什么要用threadlocal呢?不用会怎样?
  3. 教育园报修系统_【务实活动】“充电”模式强力开启,务实幼教2019暑期小红巾生存教育大培训...
  4. python语言命令大全-Python常用命令之集合
  5. pcf8951 ad/da(iic)转换模块 在 esp8266下的实现
  6. ORACLE的所有字段类型
  7. 日语学习-多邻国-关卡1-家庭
  8. HDOJ 4005-The war解题报告
  9. Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
  10. leetcode 117. 填充每个节点的下一个右侧节点指针 II(Populating Next Right Pointers in Each Node II)...
  11. 华为 “OSPF” 认证配置
  12. 服务器 通知系统设计,组列表管理服务器的设计与实现
  13. matpower在matlab里面吗,matpower matlab 238万源代码下载- www.pudn.com
  14. 嵌入式linux触摸屏校正命令,[转]基于嵌入式Linux的通用触摸屏校准程序
  15. Excel 计算两个日期间相差的天数、月数或年数 DATEDIF函数
  16. python爬知识星球付费数据_Python 知识星球爬虫(一) 根据 topic comment 爬取数据...
  17. 5000在线的服务器选择,支持负载5000人10000人在线的服务器的配置及其网络要求!!...
  18. UVa 815 Flooded
  19. 如何使用谷歌浏览器进行Debug断点调试
  20. 电梯控制技术综合实训装置QY-DT721

热门文章

  1. 数据结构(一):数据结构的概述
  2. 行式 Excel 文件拆分
  3. 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出
  4. python 字符串的输入和输出
  5. Android 8.0 WiFi Ap 热点控制接口
  6. 数据库内外联接查询语句
  7. 新年开工第一篇文章——推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器
  8. 在博客和Markdown和Python中自由添加emoji!包括博客标题和Python打印!
  9. 2023电工杯数学建模B题思路模型
  10. 图片加载和它的内存们