scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

归一化,标准化和正则化,二值化

概念和含义

数据归一化:将数据集中某一列数值特征的值缩放到0-1区间内

[z= frac{X-min(X)}{max(X)-min(X)} ]

对不同特征维度进行伸缩变换,把有量纲表达式变为无量纲表达式;

改变原始数据的分布,使得各个特征维度对目标函数的影响权重归于一致

最大值与最小值非常容易受异常点影响,鲁棒性较差。

数据标准化:将数据集中某一列数值特征的值缩放成平均值为0,标准差为1的状态

[z = frac{x_i-bar{x}}{std(x)} ]

对不同特征维度的伸缩变换使其不同度量之间的特征具有可比性;

不改变原始数据的分布,保持各个特征维度对目标函数的影响权重

对目标函数的影响体现在几何分布上。

标准化和归一化,笔者个人认为平时在用时这两个概念并不是十分清晰的,比如最大最小标准化就可以称为归一化的一种,再HMM算法求投射矩阵和转移矩阵时,需要一步频率代表概率的过程,这一步也称作归一化,但此时不能称为标准化,貌似归一化更强调变为一这一特质。关于两者之间的联系和区别,我将在有新的理解之后更新

数据正则化:将数据集中某一个样本缩放成单位标准

正则化是缩放单个样本以具有单位范数的过程。正则化有时也叫归一化,正规化。如果你计划使用 二次形式(如点积或任何其他核函数)来量化任何样本间的相似度,则此过程将非常有用。

主要应用于文本分类和聚类中。

[z = frac{x_i}{||x||_p} ]

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

标准化/归一化API实现

  • Standardscaler: 缩放至0均值,1标准差。
  • MinMaxScaler: 缩放至[0,1]之间,也可以指定范围feature_range。
  • MaxAbsScaler: 缩放至[-1,1]之间,无偏移。
  • RobustScaler:缩放有异常值的特征。

最大最小标准化

From sklearn import PReprocessing
minmaxscaler = preprocessing.MinMaxScaler(feature_range = (0,1))
minmaxscaler.fIT(DF.values)
data = minmaxscaler.transform(df.values)
dfscaled = pd.DataFrame(data,columns = list(boston.feature_names))
dfscaled.plot(legend = False)

RobustScaler——用于有异常值的特征

此时既能保留异常值,又能止异常值对整体的影响

x = np.array([10,1000,0,0,-30,0,20,0,10,0,0,-10])
x = x.reShape(-1,1)
robustscaler = preprocessing.RobustScaler(with_centering=True, with_scaling=True,
quantile_range=(25.0, 75.0), copy=True)
print(robustscaler.fit_transform(x)) # 可以这样写合两个操作为1

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

MaxAbsScaler——缩放稀疏矩阵

此时不改变0的个数和位置,其他元素被缩放

y = np.array([0]*95+[0.0,20,0,10,-10])
y = y.reshaPE(-1,1)
scaler = preprocessing.MaxAbsScaler(copy=True)
z = scaler.fit_transform(y)
z[-10:]

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

特征的正则化

from sklearn import preprocessing
X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
# 使用normalize函数
X_normalized = preprocessing.normalize(X, norm='l2')
print(X_normalized)
# 也可以使用Normalizer类
normalizer = preprocessing.Normalizer(norm = 'l1')
normalizer.fit(X)
normalizer.transform(X)

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

特征的二值化

特征二值化是将数值特征用阈值过滤得到布尔值的过程。

X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
binarizer = preprocessing.Binarizer().fit(X) # fit does nothing
binarizer
binarizer.transform(X)

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

设定一个阈值

binarizer = preprocessing.Binarizer(threshold=1.1)
binarizer.transform(X)

scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化

参考博客

[1] 数据归一化、标准化、正则化_zhouhaomy的博客-CSDN博客

脚本宝典总结

以上是脚本宝典为你收集整理的scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化全部内容,希望文章能够帮你解决scikit基础与机器学习入门(5) 归一化,标准化和正则化,二值化所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。