Main Content

RegressionSVM Predict

使用支持向量机 (SVM) 回归模型预测响应

  • 库:
  • Statistics and Machine Learning Toolbox / Regression

说明

RegressionSVM Predict 模块使用 SVM 回归对象(RegressionSVMCompactRegressionSVM)预测响应。

通过指定包含经过训练的 SVM 回归对象的工作区变量的名称,将该对象导入模块中。输入端口 x 接收一个观测值(预测变量数据),输出端口 yfit 返回该观测值的预测响应。

端口

输入

全部展开

预测变量数据,指定为一个观测值的列向量或行向量。

依存关系

  • x 中的变量必须与用来训练 Select trained machine learning model 所指定的 SVM 模型的预测变量具有相同的顺序。

  • 如果在训练 SVM 模型时在 fitrsvm 中设置了 'Standardize',true,则 RegressionSVM Predict 模块分别使用 SVM 模型中 MuSigma 属性的均值和标准差来标准化 x 的值。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

输出

全部展开

预测响应,以标量形式返回。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

参数

全部展开

主要

指定包含 RegressionSVM 对象或 CompactRegressionSVM 对象的工作区变量的名称。

使用 fitrsvm 训练 SVM 模型时,适用以下限制:

  • 预测变量数据不能包含分类预测变量(logicalcategoricalcharstringcell)。如果在表中提供训练数据,预测变量必须为数值(doublesingle)。此外,不能使用 CategoricalPredictors 名称-值参数。要在模型中包含分类预测变量,请在拟合模型之前使用 dummyvar 对分类预测变量进行预处理。

  • 'ResponseTransform' 名称-值参数的值必须为 'none'(默认值)。

  • 'KernelFunction' 名称-值参数的值必须为 'gaussian''linear'(默认值)或 'polynomial'

编程用法

模块参数:TrainedLearner
类型:工作区变量
值:RegressionSVM 对象 | CompactRegressionSVM 对象
默认值:'svmMdl'

数据类型

定点运算参数

指定定点运算的舍入模式。有关详细信息,请参阅Rounding (Fixed-Point Designer)

模块参数始终舍入到最接近的可表示值。要控制模块参数的舍入方法,请使用 MATLAB® 舍入函数在封装字段中输入表达式。

编程用法

模块参数:RndMeth
类型:字符向量
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值:'Floor'

指定对溢出是进行饱和处理还是绕回处理。

操作基本原理对溢出的影响示例

选中此复选框 (on)。

您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。

将溢出饱和处理为数据类型能够表示的最小值或最大值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。

清除此复选框 (off)。

您需要优化所生成代码的效率。

您希望避免过度地指定信号超出范围时模块的处理方式。有关详细信息,请参阅信号范围错误故障排除 (Simulink)

溢出将绕回到数据类型可以表示的合适值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。在该复选框处于清除状态时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

编程用法

模块参数:SaturateOnIntegerOverflow
类型:字符向量
值:'off' | 'on'
默认值:'off'

选择此参数可防止定点工具覆盖您对模块指定的数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数:LockScale
类型:字符向量
值:'off' | 'on'
默认值:'off'
数据类型

指定 yfit 输出的数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType

当您选择 “Inherit: auto” 时,模块使用继承数据类型的规则。

有关数据类型的详细信息,请参阅控制信号的数据类型 (Simulink)

点击显示数据类型助手按钮 以显示数据类型助手,这有助于您设置数据类型属性。有关详细信息,请参阅使用数据类型助手指定数据类型 (Simulink)

编程用法

模块参数OutDataTypeStr
类型:字符向量
'Inherit: auto' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
默认值'Inherit: auto'

指定 Simulink® 检查的 yfit 输出范围下限值。

Simulink 使用最小值执行下列操作:

注意

输出最小值参数不会限制或剪切实际 yfit 信号。请改用 Saturation (Simulink) 模块。

编程用法

模块参数OutMin
类型:字符向量
'[]' | 标量
默认值'[]'

指定 Simulink 检查的 yfit 输出范围上限值。

Simulink 使用最大值执行下列操作:

注意

输出最大值参数不会限制或剪切实际 yfit 信号。请改用 Saturation (Simulink) 模块。

编程用法

模块参数OutMax
类型:字符向量
'[]' | 标量
默认值'[]'

为核计算指定参数的数据类型。该类型可以直接指定或表示为数据类型对象,如 Simulink.NumericType

核数据类型 参数根据指定 SVM 模型的核函数类型指定不同参数的数据类型。在训练 SVM 模型时,指定 'KernelFunction' 名称-值参数。

'KernelFunction'数据类型
'gaussian''rbf'核数据类型指定高斯核 G(x,s)=exp(D2) 的平方距离 D2=xs2 的数据类型,其中 x 是观测值的预测变量数据,s 是支持向量。
'linear'核数据类型指定线性核函数 G(x,s)=xs' 的输出的数据类型,其中 x 是观测值的预测变量数据,s 是支持向量。
'polynomial'核数据类型指定多项式核函数 G(x,s)=(1+xs')p 的输出的数据类型,其中 x 是观测值的预测变量数据,s 是支持向量,p 是多项式核函数阶。

有关数据类型的详细信息,请参阅控制信号的数据类型 (Simulink)

点击显示数据类型助手按钮 以显示数据类型助手,这有助于您设置数据类型属性。有关详细信息,请参阅使用数据类型助手指定数据类型 (Simulink)

编程用法

模块参数KernelDataTypeStr
类型:字符向量
'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'uint64' | 'int64' | 'boolean' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
默认值'double'

Simulink 检查的核计算内部变量范围下限值。

Simulink 使用最小值执行下列操作:

注意

核最小值参数不会限制或剪切实际核计算值信号。

编程用法

模块参数KernelOutMin
类型:字符向量
'[]' | 标量
默认值'[]'

Simulink 检查的核计算内部变量范围的上限值。

Simulink 使用最大值执行下列操作:

注意

核最大值参数不会限制或剪切实际核计算值信号。

编程用法

模块参数KernelOutMax
类型:字符向量
'[]' | 标量
默认值'[]'

模块特性

数据类型

Boolean | double | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

提示

  • 如果您使用的是线性 SVM 模型,并且它有许多支持向量,则预测可能会很慢。要基于线性 SVM 模型高效预测响应,请使用 discardSupportVectorsRegressionSVMCompactRegressionSVM 对象中删除支持向量。

替代功能

您可以将 MATLAB Function 模块与 SVM 回归对象(RegressionSVMCompactRegressionSVM)的 predict 对象函数结合使用。有关示例,请参阅Predict Class Labels Using MATLAB Function Block

在决定是使用 Statistics and Machine Learning Toolbox™ 库中的 RegressionSVM Predict 模块还是具有 predict 函数的 MATLAB Function 模块时,请考虑以下几点:

  • 如果使用 Statistics and Machine Learning Toolbox 库模块,可以使用定点工具 (Fixed-Point Designer)将浮点模型转换为定点。

  • 必须为具有 predict 函数的 MATLAB Function 模块启用对可变大小数组的支持。

  • 如果使用 MATLAB Function 模块,您可以在同一 MATLAB Function 模块中的预测之前或之后使用 MATLAB 函数进行预处理或后处理。

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2020b 中推出

全部展开