应用数学运算
本文介绍 Azure 机器学习设计器的一个组件。
使用“应用数学运算”可创建应用于输入数据集中数值列的计算。
数学运算包括算术函数、三角函数、舍入函数以及在数据科学中使用的特殊函数(如伽马函数和误差函数)。
定义运算并运行管道后,值会添加到数据集。 根据组件的配置方式,可以:
- 将结果追加到数据集(验证运算结果时很有用)。
- 将列的值替换为新的计算值。
- 为结果生成新列,而不显示原始数据。
在以下类别中查找所需的操作:
-
“基本”类别中的函数用于处理单个值或值列。 例如,可以获取列中所有数字的绝对值,或者计算列中每个值的平方根。
-
“比较”类别中的函数全部用于比较:可以对两个列中的值进行成对比较,也可以将列中的每个值与指定的常量进行比较。 例如,可以对列进行比较,以确定两个数据集中的值是否相同。 或者,可以使用常量(例如最大允许值)来查找数值列中的异常值。
-
“运算”类别包含基本数学函数:加法、减法、乘法和除法。 可以使用列或常量。 例如,可以将列 A 中的值添加到 B 列中的值。或者,可以将列 A 中的每个值减去一个常数,例如之前计算的平均值。
-
“舍入”类别包含多种用于执行运算(例如,根据不同精度级别舍入、向下取整和截断)的函数。 可以指定小数和整数的精度级别。
-
“特殊”类别包括特别用于数据科学的数学函数,如椭圆积分和高斯误差函数。
-
“三角”类别包括所有标准三角函数。 例如,可以将弧度转换为度,或以弧度或度计算函数(例如切线)。 这些函数是一元的,这意味着它们采用单个值列作为输入,应用三角函数,并返回一列值作为结果。 确保输入列是适当的类型并且包含指定运算的正确类型的值。
如何配置“应用数学运算”
“应用数学运算”组件需要一个数据集,其中至少包含一个只包含数字的列。 数字可以是离散的,也可以是连续的,但必须是数值数据类型,而不是字符串。
可以对多个数值列应用相同的运算,但所有列必须位于同一个数据集中。
此组件的每个实例一次只能执行一种运算类型。 若要执行复杂的数学运算,可能需要将“应用数学运算”组件的多个实例链接在一起。
将“应用数学运算”组件添加到管道。
连接包含至少一个数值列的数据集。
选择要对其执行计算的一个或多个源列。
- 你选择的任何列都必须是数值数据类型。
- 数据范围必须对选定的数学运算有效。 否则,可能会出现错误或 NaN(不是数字)结果。 例如,Ln(-1.0) 是无效运算,生成值
NaN
。
选择“类别”可选择要执行的数学运算的类型 。
从该类别的列表中选择特定的运算。
设置每种运算所需的其他参数。
使用“输出模式”选项来指示要生成数学运算的方式:
- Append。 用作输入的所有列都包括在输出数据集中,另外还会追加一个包含数学运算结果的附加列。
- Inplace。 用作输入的列中的值将替换为新的计算值。
- ResultOnly。 返回一列,其中包含数学运算的结果。
提交管道。
结果
如果使用“Append”或“ResultOnly”选项生成结果,则返回的数据集的列标题指示使用的运算和列。 例如,如果使用“Equals”运算符比较两个列,结果将如下所示:
- Equals(Col2_Col1),表示针对 Col1 测试了 Col2。
- Equals(Col2_$10),表示将列 2 与常数 10 比较。
即使使用“Inplace”选项,也不会删除或更改源数据;原始数据集中的列仍可在设计器中使用。 若要查看原始数据,可以连接添加列组件,并将其加入到“应用数学运算”的输出。
基本数学运算
“基本”类别中的函数通常采用列中的单个值,执行预定义的运算,并返回单个值。 对于某些函数,可以指定常量或将列集指定为第二个参数。
Azure 机器学习支持“基本”类别中的以下函数:
Abs
返回所选列的绝对值。
Atan2
返回四象限反正切值。
选择包含点坐标的列。 对于第二个参数(该参数对应于 x 坐标),还可以指定常量。
对应于 MATLAB 中的 ATAN2 函数。
Conj
返回所选列中的值的共轭。
CubeRoot
计算所选列中的值的立方根。
DoubleFactorial
计算所选列中的值的双阶乘。 双阶乘是正常阶乘函数的扩展,以 x!!
表示。
Eps
返回当前值和下一最大双精度数字之间的间距大小。 对应于 MATLAB 中的 EPS 函数。
Exp
返回以 e 为底、以所选列中值为幂的数值。 此函数与 Excel EXP 函数相同。
Exp2
返回自变量与以 2 为底的指数次方的乘积,求解方式为 y = x * 2t,其中 t 是包含指数的值所在列。
在“列集”中,选择包含指数值 t 的列。
对于 Exp2,可以指定第二个自变量 x,该自变量可以是常量,也可以是其他值列。 在“第二个自变量类型”中,指示是将乘数 x 作为常量还是列中的值提供。
例如,如果选择一个列,其中的值 {0,1,2,3,4,5} 同时用作乘数和指数,则该函数将返回 {0, 2, 8, 24, 64 160)。
ExpMinus1
返回所选列中的值的负指数。
阶乘
返回所选列中的值的阶乘。
斜边
计算三角形的斜边,该三角形的一条边的长度指定为一个值列,另一条边的长度指定为常量或两列。
自然对数
返回所选列中的值的自然对数。
LnPlus1
返回所选列中的值的自然对数加 1。
日志
返回所选列中的值的对数(在指定底数的情况下)。
可以将底数(第二个参数)指定为常量,也可以选择其他值列。
Log10
返回所选列的以 10 为底的对数值。
Log2
返回所选列的以 2 为底的对数值。
NthRoot
返回值的指定次根。
使用 ColumnSet 选项,选择要计算根的列。
在“第二个自变量类型”中,选择包含根的另一列,或指定要用作根的常量。
如果第二个自变量是列,则列中的每个值将用作对应行的 n 的值。 如果第二个自变量为常量,请在“第二个自变量”文本框中键入 n 的值。
Pow
对于所选列中的每个值,计算 X 的 Y 次幂。
首先,通过使用 ColumnSet 选项,选择包含底数(应该为浮点值)的列。
在“第二个自变量类型”中,选择包含指数的列,或指定要用作指数的常量。
如果第二个自变量是列,则列中的每个值将用作对应行的指数。 如果第二个自变量为常量,请在“第二个自变量”文本框中键入指数的值。
Sqrt
返回所选列中的值的平方根。
SqrtPi
对于所选列中的每个值,将值乘以 pi,然后返回结果的平方根。
Square
计算所选列中的值的平方。
比较运算
如果需要对比两组值大小,可以使用 Azure 机器学习设计器中的比较函数。 例如,在管道中,你可能需要执行以下比较运算:
- 针对阈值对概率分数模型列求值。
- 确定两个结果集是否相同。 对于每个不同的行,添加一个可用于进一步处理或筛选的 FALSE 标志。
EqualTo
如果值相同,返回 True。
GreaterThan
如果列集中的值大于指定常量或大于比较列中的相应值,返回 True。
GreaterThanOrEqualTo
如果列集中的值大于或等于指定常量或者大于或等于比较列中的相应值,返回 True。
LessThan
如果列集中的值小于指定常量或小于比较列中的相应值,返回 True。
LessThanOrEqualTo
如果列集中的值小于或等于指定常量或者小于或等于比较列中的相应值,返回 True。
NotEqualTo
如果“列集”中的值不等于常量或比较列,返回 True;否则,返回 False。
PairMax
返回两者中较大的值:“列集”中的值或者常量或比较列中的值。
PairMin
返回较小的值 - 列集中的值或者常量或比较列中的值
算术运算
包括基本算术运算:加法和减法、除法和乘法。 由于大多数运算都是二进制,需要两个数字,因此需要首先选择运算,然后选择要在第一个和第二个自变量中使用的列或数字。
除法和减法的顺序如下:
- Subtract(Arg1_Arg2) = Arg1 - Arg 2
- Divide(Arg1_Arg2) = Arg1 / Arg 2
下表展示了一些示例
操作 | Num1 | Num2 | 结果列 | 结果值 |
---|---|---|---|---|
加法 | 1 | 5 | Add(Num2_Num1) | 6 |
乘法 | 1 | 5 | Multiple(Num2_Num1) | 5 |
减法 | 5 | 1 | Subtract(Num2_Num1) | 4 |
减法 | 0 | 1 | Subtract(Num2_Num1) | -1 |
部门 | 5 | 1 | Divide(Num2_Num1) | 5 |
部门 | 1 | 0 | Divide(Num2_Num1) | 无限 |
添加
使用列集指定源列,然后将这些值加上“第二个自变量”中指定的数字。
若要添加两个列中的值,请使用列集选择一个或多个列,然后使用“第二个自变量”选择第二个列。
除
将列集中的值除以一个常量,或除以“第二个自变量“中定义的列值。 换句话说,首先选取除数,然后选择被除数。 输出值为商。
乘
将“列集”中的值与指定常量或列值相乘。
减
使用列集选项,指定要进行运算的值列(被减数)。 然后,使用“第二个自变量”下拉列表指定要减去的数(减数)。 可以选择一个常量或值列。
舍入运算
Azure 机器学习设计器支持各种舍入运算。 对于许多运算,必须指定舍入时要使用的精度。 可以使用指定为常量的静态精度级别,也可以应用从值列获取的动态精度值。
如果使用常量,请将“精度类型”设置为“常量”,然后在“常量精度”文本框中键入以整数表示的位数。 如果键入非整数,组件不会引发错误,但可能不能获得预期结果。
若要为数据集中的每行使用不同的精度值,请将“精度类型”设置为“列集”,然后选择包含相应精度值的列。
Ceiling
返回“列集”中的值的上限。
CeilingPower2
返回“列集”中的值的上限平方值。
Floor
以指定精度返回“列集”中的值的下限。
Mod
以指定精度返回“列集”中的值的小数部分。
商
以指定精度返回“列集”中的值的小数部分。
余数
返回“列集”中的值的其余部分。
RoundDigits
返回“列集”中的值,并按舍入规则舍入到指定位数。
RoundDown
返回“列集”中的值,并向下舍入到指定位数。
RoundUp
返回“列集”中的值,并向上舍入到指定位数。
ToEven
返回“列集”中的值,并舍入到最近的偶整数。
ToOdd
返回“列集”中的值,并舍入到最近的奇整数。
Truncate
通过删除指定精度不允许的所有位数截断“列集”中的值。
特殊数学函数
此类别包括通常用于数据科学的特殊数学函数。 除非另有说明,否则函数为一元函数,并为所选列中的每个值返回指定的计算。
Beta
返回 Euler 的 beta 函数的值。
EllipticIntegralE
返回不完整椭圆整数的值。
EllipticIntegralK
返回完整椭圆整数 (K) 的值。
Erf
返回误差函数的值。
误差函数(也称为高斯误差函数)是 sigmoid 形状的特殊函数,用于描述扩散概率。
Erfc
返回互补误差函数的值。
Erfc
定义为 1 – erf(x)。
ErfScaled
返回刻度误差函数的值。
误差函数的刻度版本可用于避免算术下溢。
ErfInverse
返回 erf
函数的反函数的值。
ExponentialIntegralEin
返回指数整数 Ei 的值。
Gamma
返回伽马函数的值。
GammaLn
返回伽马函数的自然对数。
GammaRegularizedP
返回正则化不完整伽马函数的值。
此函数采用第二个自变量,可将其作为一个常量或一个值列提供。
GammaRegularizedPInverse
返回正则化不完整伽马函数的反函数的值。
此函数采用第二个自变量,可将其作为一个常量或一个值列提供。
GammaRegularizedQ
返回正则化不完整伽马函数的值。
此函数采用第二个自变量,可将其作为一个常量或一个值列提供。
GammaRegularizedQInverse
返回广义正则化不完整伽马函数的反函数的值。
此函数采用第二个自变量,可将其作为一个常量或一个值列提供。
PolyGamma
返回多伽玛函数的值。
此函数采用第二个自变量,可将其作为一个常量或一个值列提供。
三角函数
此类别包含大部分重要的三角函数和反三角函数。 所有三角函数均为一元函数,不需要其他自变量。
Acos
计算列值的反余弦值。
AcosDegree
计算列值的反余弦值(以度为单位)。
Acosh
计算列值的双曲反余弦值。
Acot
计算列值的反余切。
AcotDegrees
计算列值的反余切(以度为单位)。
Acoth
计算列值的双曲反余切值。
Acsc
计算列值的反余割。
AcscDegrees
计算列值的反余割(以度为单位)。
Asec
计算列值的反正割。
AsecDegrees
计算列值的反正割(以度为单位)。
Asech
计算列值的双曲反正割值。
Asin
计算列值的反正弦。
AsinDegrees
计算列值的反正弦值(以度为单位)。
Asinh
计算列值的双曲反正弦值。
Atan
计算列值的反正切。
AtanDegrees
计算列值的反正切(以度为单位)。
Atanh
计算列值的双曲反正切值。
Cos
计算列值的余弦。
CosDegrees
计算列值的余弦(以度为单位)。
Cosh
计算列值的双曲余弦值。
Cot
计算列值的余切。
CotDegrees
计算列值的余切(以度为单位)。
Coth
计算列值的双曲余切值。
Csc
计算列值的余割。
CscDegrees
计算列值的余割(以度为单位)。
Csch
计算列值的双曲余割值。
DegreesToRadians
将度转换为弧度。
Sec
计算列值的正割。
aSecDegrees
计算列值的正割(以度为单位)。
aSech
计算列值的双曲正割值。
签名
返回列值的符号。
Sin
计算列值的正弦。
Sinc
计算列值的正弦-余弦值。
SinDegrees
计算列值的正弦(以度为单位)。
Sinh
计算列值的双曲正弦值。
Tan
计算列值的正切值。
TanDegrees
计算自变量的正切值(以度为单位)。
Tanh
计算列值的双曲正切值。
技术说明
选择多个列作为第二个运算符时,请小心。 如果运算很简单(例如向所有列添加常量),则可以很容易地理解结果。
假设数据集包含多个列,你将该数据集添加到其自身。 在结果中,每个列都添加到其自身,如下所示:
Num1 | Num2 | Num3 | Add(Num1_Num1) | Add(Num2_Num2) | Add(Num3_Num3) |
---|---|---|---|---|---|
1 | 5 | 2 | 2 | 10 | 4 |
2 | 3 | -1 | 4 | 6 | -2 |
0 | 1 | -1 | 0 | 2 | -2 |
如果需要进行更复杂的计算,可以链接“应用数学运算”的多个实例。 例如,你可能使用“应用数学运算”的一个实例添加两列,然后使用“应用数学运算”的另一实例将和除以一个常量,以获取平均值。
或者,使用以下组件之一,通过 SQL、R 或 Python 脚本一次执行所有计算:
后续步骤
请参阅 Azure 机器学习可用的组件集。