1.1 数据无量纲化

在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为 将数据“无量纲化” 。譬如梯度和矩阵为核心的算法中,譬如 逻辑回归,支持向量机,神经网络,无量纲化可以加快求解速度; 而在 距离类模型,譬如K近邻,K-Means聚类中,无量纲化可以帮我们提升模型精度,避免某一个取值范围特别大的特征对距离计算造成影响。 (一个特例是决策树和树的集成算法们,对决策树我们不需要无量纲化,决策树可以把任意数据都处理得很好。)

数据的无量纲化可以是线性的,也可以是非线性的。线性的无量纲化包括
中心化 (Zero-centered或者Mean-subtraction) 处理 缩放处理 (Scale)。

  1. 中心化的本质是 让所有记录减去一个固定值,即让数据样本数据平移到某个位置
  2. 缩放的本质是 通过除以一个固定值,将数据固定在某个范围之中 ,取对数也算是一种缩放处理。

一、数据归一化

  • preprocessing.MinMaxScaler

当数据(x) 按照最小值中心化后,再按极差(最大值 - 最小值)缩放 ,数据移动了最小值个单位,并且会被收敛到[0,1]之间,而这个过程,就叫做 数据归一化 (Normalization,又称Min-Max Scaling)。注意,Normalization是归一化,不是正则化,真正的正则化是regularization,不是数据预处理的一种手段。归一化之后的数据服从正态分布,公式如下:
在这里插入图片描述
在sklearn当中,我们使用preprocessing.MinMaxScaler来实现这个功能。MinMaxScaler有一个重要参数, feature_range 控制我们希望把数据压缩到的范围,默认是[0,1]。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、数据标准化

  • preprocessing.StandardScaler
    当数据(x) 按均值(μ)中心化后,再按标准差(σ)缩放 ,数据就会服从为均值为0,方差为1的正态分布(即标准正态分布),而这个过程,就叫做 数据标准化 (Standardization,又称Z-score normalization),公式如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    对于StandardScaler和MinMaxScaler来说,空值NaN会被当做是缺失值,在fit的时候忽略,在transform的时候保持缺失NaN的状态显示。并且,尽管去量纲化过程不是具体的算法,但在fit接口中,依然 只允许导入至少二维数组,一维数组导入会报错 。通常来说,我们输入的X会是我们的特征矩阵,现实案例中特征矩阵不太可能是一维,所以不会存在这个问题。

  • StandardScaler和MinMaxScaler选哪个?
    看情况。大多数机器学习算法中,会 选择StandardScaler来进行特征缩放 因为MinMaxScaler对异常值非常敏感 。在PCA,聚类,逻辑回归,支持向量机,神经网络这些算法中,StandardScaler往往是最好的选择。
    MinMaxScaler在不涉及距离度量、梯度、协方差计算以及数据需要被压缩到特定区间时使用广泛,比如数字图像处理中量化像素强度时,都会使用MinMaxScaler将数据压缩于[0,1]区间之中。

建议先试试看StandardScaler,效果不好换MinMaxScaler。

除了StandardScaler和MinMaxScaler之外,sklearn中也提供了各种其他缩放处理(中心化只需要一个pandas广播一下减去某个数就好了,因此sklearn不提供任何中心化功能)。比如,在希望压缩数据,却不影响数据的稀疏性时(不影响矩阵中取值为0的个数时),我们会使用MaxAbsScaler;在异常值多,噪声非常大时,我们可能会选用分位数来无量纲化,此时使用RobustScaler。更多详情请参考以下列表。
在这里插入图片描述

1.1 数据无量纲化在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。譬如梯度和矩阵为核心的算法中,譬如逻辑回归,支持向量机,神经网络,无量纲化可以加快求解速度;而在距离类模型,譬如K近邻,K-Means聚类中,无量纲化可以帮我们提升模型精度,避免某一个取值范围特别大的特征对距离计算造成影响。(一个特例是决策树和树的集成算法们,对决策树我们不需要无量纲化,决策树可以把任意数据都处理得很好。)数据的无量纲化可以是线 1、把数变为(0,1)之间的小数,主要是为了 数据 处理方便提出来的,把 数据 映射到0~1范围之内处理,更加便捷快速。 2、把有量纲表达式变为无量纲表达式 归一化 是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 归一化 算法有: 1.线性转换: y=(x-minvalue)/(maxvalue-minvalue) 2.对数函数转换: y=log10(x) 3.反余切函数转换: y=atan(x)*2/pi 归一化 编程实现: import numpy as np
sklearn .preprocessing 数据预处理 归一化 / 标准化 /正则化一、 标准化 (Z-Score),或者去除均值和方差缩放二、将属性缩放到一个指定范围三、正则化(Normalization) 一、 标准化 (Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行。 将 数据 按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有 数据 都聚集在0附近,方差为1。 实现时,有两种不同的方式: 使用 sklearn .preproce
soft-margin svm 软间隔 kemel svm核函数 前面两种硬间隔和软间隔主要针对线性问题,核函数部分主要针对非线性问题,核技巧能够使svm从普通的欧氏空间、特征空间映射到高维空间,可以实现非线性的分类。 svm原理的定义: svm原理用来解决二分类问题,其可以归结为一句话,即使离超平面最近的点(支持向量)到该平面的距离最大化。 如图所示: 超平面是针对二分类问题,通过超平面将样本分为正类和负类(即图中所示 SVM是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大化是它的独特之处),通过该超平面实现对未知样本集的分类。 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机。 当训练 数据 近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机。 当训练 数据 线性不可分时,通过使用核技... 数据 标准化 (normalization)将 数据 按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除 数据 的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是 数据 归一化 处理,即将 数据 统一映射到[0,1]区间上。 数据 标准化 方法有多种,归结起来...
转自:https://www.cnblogs.com/zhange000/articles/10748906.html 数据 归一化 (Normalization,又称Min-Max Scaling): 数据 (x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放, 数据 移动了最小值个单位,并且会被收敛到[0,1]之间的过程。 归一化 之后的 数据 服从正态分布,公式如下: x = (x - min(x))...
其中,StandardScaler类是用于 数据 标准化 的类,其fit_transform方法可以对 数据 进行 标准化 处理。通过fit_transform方法,会对 数据 进行去均值和标准差 归一化 处理,并返回 标准化 后的 数据 矩阵X_std。 在实际使用中,需要根据具体问题来选择是否进行 标准化 处理,并选择合适的 标准化 方法。 pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决) 74153