pycaret学习之数据规范化与变换

一、数据规范化

规范化是机器学习中常用的一种数据准备技术。规范化的目标是重新调整数据集中数值列的值,而不会扭曲值范围中的差异或丢失信息。这可以在PyCaret中使用设置中的 normalize 参数来实现。有几种方法可用于规范化,默认情况下,它使用“zscore”来规范化数据,可以在安装程序中使用normalize_method 参数对其进行更改。

normalize: bool, default = False
当设置为True时,使用 normalized_method 参数变换特征空间。
一般来说,线性算法在处理标准化数据时表现更好,但是结果可能会有所不同,
因此可以运行多个实验来评估标准化的好处。

normalize_method: string, default = ‘zscore’
定义用于规范化的方法。默认情况下,normalize方法设置为“zscore”。
标准zscore计算为z=(x–u)/s。其他可用选项包括:
z-score:标准zscore计算为z=(x–u)/s
minmax:分别缩放和转换每个特征,使其在0-1的范围内。
maxabs:分别缩放和转换每个特征,使每个特征的最大绝对值为1.0。它不会转移/集中数据,因此不会破坏任何稀疏性。
robust:根据四分位数范围缩放和转换每个特征。当数据集包含异常值时,robust的转换通常会给出更好的结果。

二、数据变换

当规范化在新的范围内重新调整数据以减少方差的大小影响时,转换是一种更激进的技术。变换改变分布的形状,使得变换后的数据可以用正态或近似正态分布表示。通常,当使用ML算法时,必须对数据进行转换,该算法假定输入数据为正态或高斯分布。这类模型的例子有Logistic回归、线性判别分析(LDA)和高斯朴素贝叶斯。可以使用设置中的转换参数在PyCaret中实现数据转换。有两种方法可用于转换“yeo-johnson”和“quantile”,可通过设置中的转换方法参数定义。

transformation: bool, default = False
当设置为True时,将应用幂变换使数据更为正态/高斯型。
这对于建模异方差或其他需要正态性的情况下的相关问题很有用。
通过极大似然估计出了稳定方差和最小化偏度的最优参数。

transformation_method: string, default = ‘yeo-johnson’
定义转换的方法。默认情况下,转换方法设置为“yeo-johnson”。
另一个可用的选项是“quantile”转换。
这两种变换都将特征集变换为遵循类高斯分布或正态分布。

三、目标转换

目标变换类似于数据变换,它用来改变目标变量分布的形状。当使用线性回归或线性判别分析等线性算法进行建模时,必须对目标进行变换。这可以在PyCaret中使用setup中的 transform_target 参数来实现。有两种方法支持目标转换“box-cox”和“yeo-johnson”,可以在设置中使用transform_target_method 参数定义。

transform_target: bool, default = False
当设置为True时,目标变量将使用transform_target_method param中定义的方法进行转换。
目标转换与特征转换分开应用。

transform_target_method: string, default = ‘box-cox’
支持“Box-cox”和“yeo-johnson”方法。Box-Cox要求输入数据严格为正,
而Yeo-Johnson同时支持正数据和负数据,当transform_target_method为“box-cox’”
且目标变量包含负值时,method被内部强制为“yeo-johnson”以避免异常。
posted @ 2022-12-15 22:25  软锰矿  阅读(155)  评论(0编辑  收藏  举报