应用数学运算
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
对列值应用数学运算
Category: 统计函数
模块概述
本文介绍如何使用机器学习 Studio (经典) 中的 "应用数学运算" 模块来创建应用于输入数据集中数值列的计算。
支持的数学运算包括常见算术函数(如乘法和除法、三角函数、各种舍入函数),以及在数据科学中使用的特殊函数(如伽马函数和误差函数)。
定义操作并运行试验后,这些值将添加到数据集。 根据配置模块的方式,可以执行以下操作:
- 将结果追加到数据集。 验证运算结果时,此方法特别有用。
- 将列的值替换为新的计算值。
- 为结果生成新列,而不显示原始数据。
在以下类别中查找所需的操作:
-
“基本”类别中的函数用于处理单个值或值列。 例如,可以获取列中所有数字的绝对值,或者计算列中每个值的平方根。
-
“比较”类别中的函数全部用于比较:可以对两个列中的值进行成对比较,也可以将列中的每个值与指定的常量进行比较。 例如,可以对列进行比较,以确定两个数据集中的值是否相同。 或者,可以使用常量(例如最大允许值)来查找数值列中的异常值。
-
此类别包含基本数学函数:加法、减法、乘法和除法。 可以使用列或常量。 例如,可以将列 A 中的值添加到 B 列中的值。或者,可以将列 A 中的每个值减去一个常数,例如之前计算的平均值。
-
此类别包括各种函数,可用于对各种精度级别执行舍入、天花板、楼层和截断等操作。 可以指定小数和整数的精度级别。
-
“特殊”类别包括特别用于数据科学的数学函数,如椭圆积分和高斯误差函数。
-
此类别包括所有标准三角函数。 例如,可以将弧度转换为度,或以弧度或度计算函数(例如切线)。 这些函数是一元的,这意味着它们采用单个值列作为输入,应用三角函数,并返回一列值作为结果。 因此,需要确保输入列是适当的类型并且包含指定运算的正确类型的值。
示例
有关如何使用 " 应用数学运算" 的示例,请参阅 Azure AI 库中的以下示例试验:
颜色量化:从一组列值中减去另一组列值,然后结果为方形。
客户关系预测:将常量1添加到列中的所有值,以区分零和缺失值。
航班延迟预测:演示各种运算,包括舍入和除法。
直接营销:使用比较运算来确定概率评分是否满足所需的值。
如何使用应用数学运算
“应用数学运算”模块需要包含至少一个包含仅数字的列的数据集。 数字可以是离散的,也可以是连续的,但必须是数值数据类型,而不是字符串。
可以对多个数值列应用相同的运算,但所有列必须位于同一个数据集中。
此模块的每个实例一次只能执行一种类型的运算。 若要执行复杂的数学运算,可能需要将“应用数学运算”模块的多个实例链接在一起。
向试验中添加 " 应用数学运算 " 模块。 您可以在 " 统计函数 " 类别中找到此模块。
连接包含至少一个数值列的数据集。
单击“类别”可选择要执行的数学运算的类型。
例如,若要对列执行基本算法,请选择 " 操作"。 若要获得对数或天花板,请选择 " 基本"。 若要比较值列,请使用 比较。
提示
所有其他选项会随您选择的数学运算类型而变化。 而且,对该类别所做的任何更改都将重置所有其他选项。 因此,请务必先从 类别 中选择!
从该类别的列表中选择特定的运算。
选择要对其执行计算的一个或多个源列。
- 你选择的任何列都必须是数值数据类型。
- 数据范围必须对选定的数学运算有效。 否则,可能会出现错误或 NaN(不是数字)结果。 例如,Ln(-1.0) 是无效运算,生成值
NaN
。
设置每种运算所需的其他参数。
使用“输出模式”选项来指示要生成数学运算的方式:
- Append。 用作输入的所有列都包括在输出数据集中,另外还会追加一个包含数学运算结果的附加列。
- Inplace。 用作输入的列中的值将替换为新的计算值。
- ResultOnly。 返回一列,其中包含数学运算的结果。
运行试验,或只右键单击 " 应用数学运算 " 模块并选择 " 运行所选项"。
结果
如果使用“Append”或“ResultOnly”选项生成结果,则返回的数据集的列标题指示使用的运算和列。 例如,如果使用“Equals”运算符比较两个列,结果将如下所示:
- Equals(Col2_Col1),表示针对 Col1 测试了 Col2。
- Equals(Col2_$10),表示将列 2 与常数 10 比较。
即使使用 就地 选项,也不会删除或更改源数据;原来的数据集中的列仍在 Studio (经典) 中可用。 若要查看原始数据,可以连接“添加列”模块,并将其联接到“应用数学运算”的输出。
基本数学运算
“基本”类别中的函数通常采用列中的单个值,执行预定义的运算,并返回单个值。 对于某些函数,可以指定常量作为第二个参数。
机器学习支持 "基本" 类别中的以下函数:
Abs
返回所选列的绝对值。
Atan2
返回四象限反正切值。
选择包含点坐标的列。 对于第二个参数(该参数对应于 x 坐标),还可以指定常量。
对应于 Matlab 中的 ATAN2 函数。
Conj
返回所选列中的值的共轭。
CubeRoot
计算所选列中的值的立方根。
DoubleFactorial**
计算所选列中的值的双阶乘。 双阶乘是普通阶乘函数的扩展,表示为 x!!。
Eps
返回当前值和下一最大双精度数字之间的间距大小。 对应于 Matlab 中的 EPS 函数。
Exp
返回以 e 为底、以所选列中值为幂的数值。 这与 Excel EXP 函数相同。
Exp2
返回自变量与以 2 为底的指数次方的乘积,求解方式为 y = x * 2t,其中 t 是包含指数的值所在列。
对于 Exp2 ,可以指定第二个参数 x,该参数可以是常量,也可以是其他值列。
在 " 第二个参数类型" 中,指示是将乘数 t 作为常量还是列中的值提供。
您可以选择包含指数值的单个列,或者在 " 常量第二个参数 " 文本框中键入指数值。 然后,在 " 列集" 中,选择包含指数值的列。
例如,如果选择一个列,其中的值 {0,1,2,3,4,5} 同时用作乘数和指数,则该函数将返回 {0, 2, 8, 24, 64 160)。
ExpMinus1
返回所选列中的值的负指数。
阶乘
返回所选列中的值的阶乘。
斜边
计算三角形的斜边,该三角形的一条边的长度指定为一个值列,另一条边的长度指定为常量或两列。
ImaginaryPart
返回所选列中的值的虚数部分。
自然对数
返回所选列中的值的自然对数。
LnPlus1
返回所选列中的值的自然对数加 1。
日志
返回所选列中的值的对数(在指定底数的情况下)。
可以将底数(第二个参数)指定为常量,也可以选择其他值列。
Log10
返回所选列中的值以10为底的对数。
Log2
返回所选列中的值的以2为底的对数。
NthRoot
返回值的指定次根。
使用 ColumnSet 选项,选择要计算根的列。
在“第二个自变量类型”中,选择包含根的另一列,或指定要用作根的常量。
如果第二个自变量是列,则列中的每个值将用作对应行的 n 的值。 如果第二个参数为常量,请在 " 常量第二个参数 " 文本框中键入 n 的值。
Pow
对于所选列中的每个值,计算 X 的 Y 次幂。
首先,通过使用列集选项,选择包含基数(应为 float)的列。
在“第二个自变量类型”中,选择包含指数的列,或指定要用作指数的常量。
如果第二个自变量是列,则列中的每个值将用作对应行的指数。 如果第二个参数为常量,请在“常量第二个参数”文本框中键入指数值。
RealPart
返回所选列中的值的实部。
Sqrt
返回所选列中的值的平方根。
SqrtPi
对于所选列中的每个值,将值乘以 pi,然后返回结果的平方根。
Square
计算所选列中的值的平方。
比较运算
在机器学习 Studio 中使用比较函数 (经典) 随时需要测试两组值。 例如,在实验中,你可能需要执行以下比较操作:
- 针对阈值对概率分数模型列求值。
- 确定两个结果集是否相同,并且对于每个不同的行,添加一个可用于进一步处理或筛选的假标志。
EqualTo
如果值相同,返回 True。
GreaterThan
如果列集中的值大于指定常量或大于比较列中的相应值,返回 True。
GreaterThanOrEqualTo
如果列集中的值大于或等于指定常量或者大于或等于比较列中的相应值,返回 True。
LessThan
如果列集中的值小于指定常量或小于比较列中的相应值,返回 True。
LessThanOrEqualTo
如果列集中的值小于或等于指定常量或者小于或等于比较列中的相应值,返回 True。
NotEqualTo
如果“列集”中的值不等于常量或比较列,返回 True;否则,返回 False。
PairMax
返回两者中较大的值:“列集”中的值或者常量或比较列中的值。
PairMin
返回较小的值 - 列集中的值或者常量或比较列中的值
算术运算
包括基本算术运算:加法和减法、除法和乘法。 由于大多数运算都是二进制,需要两个数字,因此需要首先选择运算,然后选择要在第一个和第二个自变量中使用的列或数字。
选择除法和减法列的顺序可能看起来不够直观。但是,为了更容易理解结果,列标题提供运算名称和列的使用顺序。
操作 | Num1 | Num2 | 结果列 | 结果值 |
---|---|---|---|---|
加法 | 1 | 5 | Add(Num2_Num1) | 4 |
乘法 | 1 | 5 | Multiple(Num2_Num1) | 5 |
减法 | 1 | 5 | Subtract(Num2_Num1) | 4 |
减法 | 0 | 1 | Subtract(Num2_Num1) | 0 |
部门 | 1 | 5 | Divide(Num2_Num1) | 5 |
部门 | 0 | 1 | Divide(Num2_Num1) | 无限 |
添加
使用 列集指定源列,然后将这些值添加到 常量操作参数中指定的数字。
若要添加两个列中的值,请使用 列集选择一个或多个列,然后使用 Operation 参数选择第二列。
除
将“列集”中的值除以“运算参数”中所定义的常量或列值。 换句话说,首先选取除数,然后选择被除数。 输出值为商。
乘
将“列集”中的值与指定常量或列值相乘。
减
使用 "操作参数" 下拉列表指定减数) (要减去的数字。 可以选择一个常量或值列。 然后,使用第二列 set选项,指定要对被减数) (的值的列。
可以从值列中的每个值减去一个常量,而不是从反向运算。 为此,请改为使用加法。
舍入运算
Studio (经典) 支持各种舍入操作。 对于许多运算,必须指定舍入时要使用的精度。 可以使用指定为常量的静态精度级别,也可以应用从值列获取的动态精度值。
如果使用常量,请将“精度类型”设置为“常量”,然后在“常量精度”文本框中键入以整数表示的位数。 如果键入一个非整数,该模块不会引发错误,但可能会产生意外的结果。
若要为数据集中的每行使用不同的精度值,请将“精度类型”设置为“列集”,然后选择包含相应精度值的列。
Ceiling
返回“列集”中的值的上限。
CeilingPower2
返回“列集”中的值的上限平方值。
Floor
以指定精度返回“列集”中的值的下限。
Mod
以指定精度返回“列集”中的值的小数部分。
商
以指定精度返回“列集”中的值的小数部分。
余数
返回“列集”中的值的其余部分。
RoundDigits
返回“列集”中的值,并按舍入规则舍入到指定位数。
RoundDown
返回“列集”中的值,并向下舍入到指定位数。
RoundUp
返回“列集”中的值,并向上舍入到指定位数。
ToEven
返回“列集”中的值,并舍入到最近的偶整数。
ToOdd
返回“列集”中的值,并舍入到最近的奇整数。
Truncate
通过删除指定精度不允许的所有位数截断“列集”中的值。
特殊数学函数
此类别包括通常用于数据科学的特殊数学函数。 除非另有说明,否则函数为一元函数,并为所选列中的每个值返回指定的计算。
Beta
返回欧拉的 beta 函数的值。
EllipticIntegralE
返回不完整椭圆整数的值。
EllipticIntegralK
返回完整椭圆整数 (K) 的值。
Erf
返回误差函数的值。
误差函数(也称为高斯误差函数)是 sigmoid 形状的特殊函数,用于描述扩散概率。
Erfc
返回互补误差函数的值。
Erfc 定义为 1 – erf(x)。
ErfScaled
返回刻度误差函数的值。
误差函数的刻度版本可用于避免算术下溢。
ErfInverse
返回误差函数的反函数的值。
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
计算列值的双曲反正切值。
Cis
返回由正弦和 cosine 创建的复杂值函数,其定义 cis θ = cos θ + isin θ。
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 脚本一次执行所有计算:
一元函数和二进制函数
在 一元运算中,基于列值创建计算,而不引用其他列或常量。
例如,你可能会将列值截断到某种精度、向上或向下舍入值或查找上限或下限值。
一元运算的一个示例是 Abs(X)
,其中 X 是作为输入提供的列。
在二 元运算中,指定两组值。 第一个参数必须始终是一列或一组列,而第二个参数可以是指定为常量或另一列的一个数字。
使用两个列的二元运算的一个示例是 Subtract(X,Y)
,其中,X 是你选择的第一列,Y 则为第二列。
使用合并 Subtract(X,mean)
列和常量的二元运算的示例可能是 ,其中键入列平均值作为常量,并从列 X 中的每个值中减去它。
处理分类列中的数字
对以数字表示的分类值的支持取决于函数以及函数采用的参数数量。
如果操作包含指定为分类列的数字,则一元运算可以应用于分类数据值。
如果将一元运算应用于分类列,可以将输入列的分类数据值转换为输出列的相等关联分类数据值。 在这种情况下,将合并这些值,使输出中的分类数据值数始终小于输入中的值数。
如果将二元运算应用于分类列和其他一些列,则预期行为如下所示:
如果另一个列是密集列,则输出列是分类列。
输入中存在的分类数据值将会丢失。
输出列仅包含输出列数据中存在的值。
如果另一个列是稀疏列,则输出列是稀疏列。
如果二元运算的两个参数都是稀疏列,结果列则包含两个输入列均包括后台零的所有位置中的后台零。
处理稀疏列
在一元运算中,与背景零对应的稀疏列的所有元素都未处理。
在二元运算中,如果一个参数是稀疏列,另一个参数是密集列,则生成的列是稀疏列,所有背景零都从稀疏列的输入传播。
预期输入
名称 | 类型 | 说明 |
---|---|---|
数据集 | 数据表 | 输入数据集 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
结果数据集 | 数据表 | 结果数据集 |