特征转换

最近更新时间:2023-12-27 18:07:21

我的收藏
注意:
部分输出请在高级设置中查看。

BoxCox 转换(BoxCoxTransformer)

原理

算法说明

该算子用于连续变量不满足正态分布的情况,通过 lambda 参数对数值特征列进行变换,将特征数据变换为更接近正态分布的数据。Box-Cox 变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。算法支持自定义 lambda 变换以及按照最大似然函数优化计算最优 lambda 值。需要注意的是,由于变换函数为指数或者对数函数,需要变换的值应当为正数。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,从0开始计数。
算法参数
lambda :当 lambda 等于 0 时,相当于对特征进行对数变换,当 lambda 不等于 0 时,对特征进行 (math.pow(y_t, lambda) -1) / lambda 变换。当 lambda 为空时,将会首先自动计算最优 lambda 然后进行变换。

Demo

输入数据示例

年龄,资金,性别
12,10,男
18,100,女
50,100,男
50,100,女
14,20,女

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:0-1 ,年龄和资金列会被变换。
算法参数
lambda :空,将会自动计算最优 lambda 并转换。

输出数据示例

将会输出两个数据,第一个是变换后的数据,如下所示:
年龄,资金,性别
1.3965240986660075,5.618495392178745,男
1.4972689952647003,32.900255536122096,女
1.6743113227041384,32.900255536122096,男
1.6743113227041384,32.900255536122096,女
1.4373411110227257,9.928282436372207,女
第二个为输入或者计算得到的 lambda 值,包括两列,第一列为变换的列名,第二列为对应的 lambda 值,如下示:
column,lambda_value
年龄,-0.518777281590936
资金,0.6862523573429163

主成分分析(PCA)

原理

算法说明

主成分分析一种统计学的特征降维方法,将数据从原来的坐标系投影到新的坐标系,通过每个维度的方差大小来衡量该维度的重要性。从中选取重要性排在前K个的特征作为新的特征,达到数据降维的目的。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过 PCA 的特征会 append 到数据的最后几列。
算法参数
训练节点
*k :降维后的特征维度

Demo

输入数据示例

v1,v2,v3,v4,v5
12,10,10,30,50
18,100,100,1000,90
50,100,200,300,10
50,100,300,200,20
14,20,40,100,200

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:0-3,即前 4 列数据。
算法参数
*k :2,把选中的数据降到 2 维。

用于降维的特征列会被删除,降维生成的 2 列特征会插在最后 2 列。

输出数据示例

v5,pcaFeatures_0,pcaFeatures_1
50,30.86366746820462,-12.749336559795966
90,1006.770971415153,-81.5509444781317
10,311.2982341487435,-211.79836455113008
20,214.06674205859906,-310.8671607604307
200,102.12473844920414,-41.18851769215195

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

分位数离散化

原理

算法说明

分位数离散化输入连续的特征列,输出离散的特征。分桶数是通过参数“桶数量”来指定的。 桶的范围是通过使用近似算法(见 approxQuantile)来得到的。桶的上边界和下边界分别是正无穷和负无穷时,取值将会覆盖所有的实数值。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。
算法参数
*桶数量:分桶的个数。

Demo

输入数据示例

id,hour
0,18
1,19
2,8
3,5
4,2.2

训练参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:1
算法参数
*桶数量:3

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

预测参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:1

预测输出数据示例

id,hour
0,2.0
1,2.0
2,1.0
3,1.0
4,0

向量索引(VectorIndexer)

原理

算法说明

向量索引把数据集中的类型特征转换为索引。该算子不仅可以自动的判断哪些特征可以类别化,也能将原有的值转换为类别索引。通过 maxCategories 参数来判断特征是否可以类别化,并把数值个数不多的数值型特征转换为类别型特征。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:支持自动输入。表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过向量索引的特征会 append 到数据的最后几列。
算法参数
*最大类别数:拥有的不同值的数量小于等于最大类别数的特征被判断可以类别化。

Demo

输入数据示例

年龄,资金,性别
12,10,男
18,100,女
50,100,男
50,100,女
14,20,女

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:1 ,把“资金”按其值变为类别型特征。
算法参数
*最大类别数:3 ,特征列,即'资金'列一共有 3 种数值,分为 3 类,用 0 ,1 ,2 标识。
原始特征列会删除,新的特征列插在最后。

输出数据示例

年龄,资金,性别
12,0.0,男
18,2.0,女
50,2.0,男
50,2.0,女
14,1.0,女

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

多项式展开(PolynomialExpansion)

原理

算法说明

多项式展开是一个将特征展开到多元空间的处理过程。 该算子通过 degree(阶)结合原始的维度来定义。例如设置 degree 为 2 就可以将 (x, y) 转化为 (x, x x, y, x y, y y) 。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*输出文件类型:格式包括以下两种:
csv :csv 文件
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过多项式展开的特征会 append 到数据的最后几列。
算法参数
*阶数:展开阶数。

Demo

输入数据示例

年龄,资金,性别
12,10,男
18,100,女
50,100,男
50,100,女
14,20,女

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:0,1 。
算法参数
*阶数:2 。

原始特征列会删除,新的多项式特征列插在最后。

输出数据示例

性别,polyFeatures_0,polyFeatures_1,polyFeatures_2,polyFeatures_3,polyFeatures_4
男,12.0,144.0,10.0,120.0,100.0
女,18.0,324.0,100.0,1800.0,10000.0
男,50.0,2500.0,100.0,5000.0,10000.0
女,50.0,2500.0,100.0,5000.0,10000.0
女,14.0,196.0,20.0,280.0,400.0

字符串索引化(StringIndexer)

原理

算法说明

该算子把数据集中的字符串特征转换为索引。字符串索引很多情况下会和独热编码一起使用。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过字符串索引的特征会 append 到数据的最后几列。
算法参数
训练节点
*处理非法值的方法:非法值指在训练集中出现过在测试集中未出现过的字符串,提供了三种处理相应数据的方法。选择忽略将会略过相应行,选择报错将会抛出异常,选择保持将会使用一个额外的索引值来索引所有在训练集中未出现的字符串。
*排序方式:对字符串进行索引的顺序,可以选择按频率倒序、按频率正序、按字母倒序、按字母正序四种方法。

Demo

输入数据示例

id,年龄,资金,性别
0,12,10,男
1,18,100,女
2,50,100,男
3,50,100,女
4,14,20,女

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:3 ,将“性别”特征列字符转化为数字。
算法参数
*处理非法值的方法:忽略
*排序方式:按频率倒序

原始特征列会删除,新的字符串索引化特征列插在最后。

输出数据示例

id,年龄,资金,性别
0,12,10,1.0
1,18,100,0.0
2,50,100,1.0
3,50,100,0.0
4,14,20,0.0

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

最小最大归一化(MinMaxScaler)

原理

算法说明

该算子将指定特征列调整到一个特定的范围(通常是 [0,1])。用户设转换范围的下界为 min ,上界为 max ,x 为原始数据,则输出为 {[(x-x_min)/(x_max-x_min)]*(max-min)}+min 。其中 x_max 为样本数据的最大值,x_min 为样本数据的最小值。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过过最小最大归一化的特征会 append 到数据的最后几列。
算法参数
训练节点
*最大值:默认是 1 。转换的上界,被所有特征共享。
*最小值:默认是 0 。转换的下界,被所有的特征共享。

Demo

输入数据示例

年龄,资金
12,10
18,100
50,100
50,100
14,20

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:0,1 ,对“年龄”,“资金”列进行缩放。
算法 IO 参数
*最大值:1,“年龄”,“资金”列缩放到 [0,1] 。
*最小值:0

输出数据示例

年龄,资金
0.0,0.0
0.15789473684210525,1.0
1.0,1.0
1.0,1.0
0.05263157894736842,0.1111111111111111

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

标准归一化(StandardScaler)

原理

算法说明

在原始的数据中,各变量的范围大不相同。对于某些机器学习的算法,若没有做过标准化,目标函数会无法适当的运作。举例来说,多数的分类器利用两点间的距离计算两点的差异, 若其中一个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,有些特征应该被标准化,这样才能使各特征按比例影响两点间的距离。另外一个做特征缩放的理由是他能使加速梯度下降法的收敛。

该算子可根据用户设置使每个特征中的数值平均变为 0 (将每个特征的值都减掉原始数据中该特征的均值),标准差变为 1 (可选)。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认包含“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认包含“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

最后的结果中,选中的原始特征列会被删除,经过过标准归一化的特征会 append 到数据的最后几列。
算法参数
训练节点:
*是否均值:默认选“是”,即特征减去均值。
*是否方差:默认选“否”,即特征不除以方差。

Demo

输入数据示例

年龄,资金
12,10
18,100
50,100
50,100
14,20

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:0,1,对“年龄”,“资金”列进行标准归一化。
算法 IO 参数
*是否均值:是,“年龄”,“资金”列缩放到 [0,1] 。
*是否方差:是

输出数据示例

输出数据选中列的每一列标准差为 0 ,方差为 1 。
年龄,资金
-0.8627304315186491,-1.1993882232587343
-0.5546124202619888,0.7281999926928029
1.0886836397735333,0.7281999926928029
1.0886836397735333,0.7281999926928029
-0.7600244277664291,-0.9852117548196745

预测过程

训练算子训练成功后,将模型路径接口与预测算子模型路径接口相连进行使用即可。具体配置参考“算法 IO 参数”。

将测试数据拖拽到预测算子输入数据接口,运行预测算子对测试数据进行预测。

特征分桶

原理

算法说明

特征分桶将连续的特征列转换成离散的列。这些离散值由用户指定,通过“切分区间”参数来确定。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。
算法 IO 参数
*切分区间:如果有 n+ 切分区间,那么将有 n 个桶。桶将由区间 x 和区间 y 共同确定,它的值范围为 [x,y] ,如果是最后一个桶,范围将是 [x,y] 。切分区间应该严格递增。例如“0.0,1.0,2.0”。

Demo

输入数据示例

id,hour
0,18
1,19
2,8
3,5
4,2.2

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*特征列:1
算法 IO 参数
*切分区间:0,5,10,15,20

预测输出数据示例

id,hour
0,4.0
1,4.0
2,2.0
3,2.0
4,1.0

独热编码(OneHotEncoder)

原理

算法说明

将离散型特征的每一种取值都看成一种状态,若用户的这一特征中有 N 个不相同的取值,那么我们就可以将该特征抽象成 N 种不同的状态,独热编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这 N 种状态中只有一个状态位值为 1 ,其他状态位都是 0 。

参数配置

算法 IO 参数
*输入文件类型:格式包括以下两种:
csv :csv 文件
*输入数据包含 header 信息:默认为“是”。
*输入数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
*输出数据包含 header 信息:默认为“是”。
*输出数据分隔符:数据分隔符,默认为逗号,可下拉选择其他分隔符。
parquet :列式存储格式 parquet
*选择特征列:表示需要计算的特征所在列,例如“1-12,15”,表示取特征在表中的 1 到 12 列,15 列,从 0 开始计数。

输出格式:| 不参与计算的 features | 独热编码的结果 |

Demo

输入数据示例

年龄,资金,性别
12,10,0
18,100,1
50,100,0
50,100,1
14,20,1

参数配置

算法 IO 参数
*输入文件类型:csv
*输入数据是否包含 header 信息:是
*输入数据分隔符:逗号
*输出数据是否包含 header 信息:是
*输出数据分隔符:逗号
*选择特征列:2,将“性别”列转化为独热编码。

输出数据示例

年龄, 资金,性别_tione_0, 性别_tione_1
12,10,1.0,0.0
18,100,0.0,1.0
50,100,1.0,0.0
50,100,0.0,1.0
14,20,0.0,1.0