主要内容gydF4y2Ba

ClassificationECOCgydF4y2Ba

支持向量机(svm)和其他分类器的多类模型金宝appgydF4y2Ba

描述gydF4y2Ba

ClassificationECOCgydF4y2Ba是一个gydF4y2Ba纠错输出码(ECOC)分类器gydF4y2Ba用于多类学习,其中分类器由多个二元学习器组成,如支持向量机(svm)。金宝app训练有素的gydF4y2BaClassificationECOCgydF4y2Ba分类器存储训练数据、参数值、先验概率和编码矩阵。使用这些分类器来执行诸如预测标签或新数据的后验概率等任务gydF4y2Ba预测gydF4y2Ba).gydF4y2Ba

创建gydF4y2Ba

创建一个gydF4y2BaClassificationECOCgydF4y2Ba对象,使用gydF4y2BafitcecocgydF4y2Ba.gydF4y2Ba

如果指定线性或内核二进制学习器而没有指定交叉验证选项,则gydF4y2BafitcecocgydF4y2Ba返回一个gydF4y2BaCompactClassificationECOCgydF4y2Ba对象。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

在创建一个gydF4y2BaClassificationECOCgydF4y2Ba模型对象,您可以使用点符号来访问它的属性。有关示例,请参见gydF4y2Ba使用SVM学习器训练多类模型gydF4y2Ba.gydF4y2Ba

ECOC属性gydF4y2Ba

训练过的二进制学习器,指定为模型对象的单元向量。二元学习器的数量取决于类的数量gydF4y2BaYgydF4y2Ba以及编码设计。gydF4y2Ba

软件训练gydF4y2BaBinaryLearner {j}gydF4y2Ba根据所指定的二进制问题gydF4y2BaCodingMatrixgydF4y2Ba(:, j)gydF4y2Ba.例如,对于使用SVM学习器的多类学习,中的每个元素gydF4y2BaBinaryLearnersgydF4y2Ba是一个gydF4y2BaCompactClassificationSVMgydF4y2Ba分类器。gydF4y2Ba

数据类型:gydF4y2Ba细胞gydF4y2Ba

二元学习器损失函数,指定为表示损失函数名称的字符向量。gydF4y2Ba

默认的gydF4y2BaBinaryLossgydF4y2Ba值取决于二进制学习器返回的分数范围。该表标识了一些默认值gydF4y2BaBinaryLossgydF4y2Ba当您使用默认分数转换(gydF4y2BaScoreTransformgydF4y2Ba模型的属性为gydF4y2Ba“没有”gydF4y2Ba).gydF4y2Ba

假设gydF4y2Ba 默认值gydF4y2Ba

所有二元学习器都是以下任意一个:gydF4y2Ba

  • 分类决策树gydF4y2Ba

  • 判别分析模型gydF4y2Ba

  • kgydF4y2Ba-最近邻模型gydF4y2Ba

  • 逻辑回归学习器的线性或核分类模型gydF4y2Ba

  • 朴素贝叶斯模型gydF4y2Ba

“二次”gydF4y2Ba
所有的二元学习器都是支持向量机或支持向量机学习器的线性或核分类模型。gydF4y2Ba “枢纽”gydF4y2Ba
所有二元学习器都是由gydF4y2BaAdaboostM1gydF4y2Ba或gydF4y2BaGentleBoostgydF4y2Ba.gydF4y2Ba “指数”gydF4y2Ba
所有二元学习器都是由gydF4y2BaLogitBoostgydF4y2Ba.gydF4y2Ba “binodeviance”gydF4y2Ba
您指定通过设置来预测类后验概率gydF4y2Ba“FitPosterior”,真的gydF4y2Ba在gydF4y2BafitcecocgydF4y2Ba.gydF4y2Ba “二次”gydF4y2Ba
二元学习器是异构的,使用不同的损失函数。gydF4y2Ba “汉明”gydF4y2Ba

若要检查默认值,请使用点表示法显示gydF4y2BaBinaryLossgydF4y2Ba属性。gydF4y2Ba

方法在预测或损失计算过程中指定一个二进制损失函数,以潜在地提高精度gydF4y2BaBinaryLossgydF4y2Ba的名称-值参数gydF4y2Ba预测gydF4y2Ba或gydF4y2Ba损失gydF4y2Ba.有关更多信息,请参见gydF4y2Ba二元损失gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba

二进制学习器类标签,指定为数值矩阵。gydF4y2BaBinaryYgydF4y2Ba是一个gydF4y2BaNumObservationsgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2Ba矩阵,gydF4y2BalgydF4y2Ba是二元学习器的数目(gydF4y2Ba长度(Mdl.BinaryLearners)gydF4y2Ba).gydF4y2Ba

的元素gydF4y2BaBinaryYgydF4y2Ba是gydF4y2Ba1gydF4y2Ba,gydF4y2Ba0gydF4y2Ba,或gydF4y2Ba1gydF4y2Ba,该值对应于二分类的类赋值。该表描述了如何学习gydF4y2BajgydF4y2Ba分配的观察gydF4y2BakgydF4y2Ba的值对应于的二分类类gydF4y2BaBinaryY (k, j)gydF4y2Ba.gydF4y2Ba

价值gydF4y2Ba 二分类分配gydF4y2Ba
1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba分配的观察gydF4y2BakgydF4y2Ba到一个消极的班级。gydF4y2Ba
0gydF4y2Ba 培训前,学习者gydF4y2BajgydF4y2Ba删除的观察gydF4y2BakgydF4y2Ba从数据集中。gydF4y2Ba
1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba分配的观察gydF4y2BakgydF4y2Ba去上积极向上的课。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

此属性是只读的。gydF4y2Ba

的单元格数组指定的数值预测器的Bin边gydF4y2BapgydF4y2Ba数字向量,其中gydF4y2BapgydF4y2Ba是预测因子的数量。每个向量都包含数值预测器的bin边。类别预测器的单元格数组中的元素为空,因为软件不收纳类别预测器。gydF4y2Ba

类型时,软件才会对数值预测器进行分类gydF4y2Ba“NumBins”gydF4y2Ba在使用树学习器训练模型时,名称-值参数作为正整数标量。的gydF4y2BaBinEdgesgydF4y2Ba属性为空gydF4y2Ba“NumBins”gydF4y2Ba值为空(默认值)。gydF4y2Ba

您可以重新生成已归档的预测器数据gydF4y2BaXbinnedgydF4y2Ba通过使用gydF4y2BaBinEdgesgydF4y2Ba训练模型的属性gydF4y2BamdlgydF4y2Ba.gydF4y2Ba

X = mdl.X;%预测数据Xbinned = 0(大小(X));edges = mdl.BinEdges;查找已分类预测符的索引。idxNumeric = find(~cellfun(@isempty,edges));if iscolumn(idxNumeric) idxNumeric = idxNumeric';end for j = idxNumeric x = x (:,j);如果x是一个表,则将x转换为数组。If stable(x) x = table2array(x);将x分组到箱子中gydF4y2Ba离散化gydF4y2Ba函数。Xbinned =离散化(x,[-inf;边缘{};正]);Xbinned(:,j) = Xbinned;结束gydF4y2Ba
XbinnedgydF4y2Ba包含数值预测器的容器索引,范围从1到容器数。gydF4y2BaXbinnedgydF4y2Ba类别预测器的值为0。如果gydF4y2BaXgydF4y2Ba包含gydF4y2Ba南gydF4y2BaS,然后是对应的gydF4y2BaXbinnedgydF4y2Ba值是gydF4y2Ba南gydF4y2Ba年代。gydF4y2Ba

数据类型:gydF4y2Ba细胞gydF4y2Ba

二进制学习器的类赋值代码,指定为数值矩阵。gydF4y2BaCodingMatrixgydF4y2Ba是一个gydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2Ba矩阵,gydF4y2BaKgydF4y2Ba是班级的数量和gydF4y2BalgydF4y2Ba是二元学习器的数目。gydF4y2Ba

的要素gydF4y2BaCodingMatrixgydF4y2Ba是gydF4y2Ba1gydF4y2Ba,gydF4y2Ba0gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,这些值对应于二分法的课程分配。该表描述了如何学习gydF4y2BajgydF4y2Ba在课堂上布置观察gydF4y2Ba我gydF4y2Ba的值对应于的二分类类gydF4y2BaCodingMatrix (i, j)gydF4y2Ba.gydF4y2Ba

价值gydF4y2Ba 二分类分配gydF4y2Ba
1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba在课堂上布置观察gydF4y2Ba我gydF4y2Ba到一个消极的班级。gydF4y2Ba
0gydF4y2Ba 培训前,学习者gydF4y2BajgydF4y2Ba删除类中的观察值gydF4y2Ba我gydF4y2Ba从数据集中。gydF4y2Ba
1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba在课堂上布置观察gydF4y2Ba我gydF4y2Ba去上积极向上的课。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba

编码设计名称,指定为字符向量。详情请参见gydF4y2Ba编码设计gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba

二进制学习器权重,指定为数值行向量。的长度gydF4y2BaLearnerWeightsgydF4y2Ba等于二元学习器的数目(gydF4y2Ba长度(Mdl.BinaryLearners)gydF4y2Ba).gydF4y2Ba

LearnerWeights (j)gydF4y2Ba观察权重的和是二元学习者吗gydF4y2BajgydF4y2Ba用于训练其分类器。gydF4y2Ba

软件使用gydF4y2BaLearnerWeightsgydF4y2Ba通过最小化Kullback-Leibler散度来拟合后验概率。软件忽略了gydF4y2BaLearnerWeightsgydF4y2Ba当它使用二次规划方法估计后验概率时。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

其他分类属性gydF4y2Ba

分类预测指标,指定为正整数向量。gydF4y2BaCategoricalPredictorsgydF4y2Ba包含指示相应预测符是分类的索引值。索引值在1和之间gydF4y2BapgydF4y2Ba,在那里gydF4y2BapgydF4y2Ba用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空(gydF4y2Ba[]gydF4y2Ba).gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。gydF4y2Ba一会gydF4y2Ba与类标签具有相同的数据类型gydF4y2BaYgydF4y2Ba.gydF4y2Ba(该软件将字符串数组视为字符向量的单元格数组。)gydF4y2Ba一会gydF4y2Ba也决定了类的顺序。gydF4y2Ba

数据类型:gydF4y2Ba分类gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

此属性是只读的。gydF4y2Ba

错误分类代价,指定为方阵数字矩阵。gydF4y2Ba成本gydF4y2Ba有gydF4y2BaKgydF4y2Ba行和列,其中gydF4y2BaKgydF4y2Ba是类的数量。gydF4y2Ba

成本(i, j)gydF4y2Ba将一个点分类的成本是多少gydF4y2BajgydF4y2Ba如果它真正的阶级是gydF4y2Ba我gydF4y2Ba.的行和列的顺序gydF4y2Ba成本gydF4y2Ba中类的顺序对应gydF4y2Ba一会gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

扩展的预测器名称,指定为字符向量的单元格数组。gydF4y2Ba

如果模型对分类变量使用编码,则gydF4y2BaExpandedPredictorNamesgydF4y2Ba包括描述展开变量的名称。否则,gydF4y2BaExpandedPredictorNamesgydF4y2Ba和gydF4y2BaPredictorNamesgydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba细胞gydF4y2Ba

参数值,例如用于训练ECOC分类器的名称-值对参数值,指定为对象。gydF4y2BaModelParametersgydF4y2Ba不包含估计参数。gydF4y2Ba

访问属性gydF4y2BaModelParametersgydF4y2Ba使用点表示法。例如,通过使用列出包含二元学习器参数的模板gydF4y2BaMdl.ModelParameters.BinaryLearnergydF4y2Ba.gydF4y2Ba

训练数据中的观察数,指定为正数值标量。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

预测器名称按其在预测器数据中的出现顺序排列gydF4y2BaXgydF4y2Ba,指定为字符向量的单元格数组。的长度gydF4y2BaPredictorNamesgydF4y2Ba等于里面的列数gydF4y2BaXgydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba细胞gydF4y2Ba

此属性是只读的。gydF4y2Ba

优先类概率,指定为数值向量。gydF4y2Ba之前gydF4y2Ba元素的数量和类的数量一样多gydF4y2Ba一会gydF4y2Ba,元素的顺序对应于类的顺序gydF4y2Ba一会gydF4y2Ba.gydF4y2Ba

fitcecocgydF4y2Ba结合了不同类型二元学习器的错误分类代价。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

响应变量名,指定为字符向量。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba

用于拟合的原始训练数据行gydF4y2BaClassificationECOCgydF4y2Ba模型,指定为逻辑向量。如果使用所有行,则此属性为空。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

应用于预测分数的分数转换函数,指定为函数名或函数句柄。gydF4y2Ba

将分数转换函数更改为gydF4y2Ba函数gydF4y2Ba例如,使用点表示法。gydF4y2Ba

  • 对于内置函数,输入此代码并替换gydF4y2Ba函数gydF4y2Ba使用表中的值。gydF4y2Ba

    Mdl。ScoreTransform = 'gydF4y2Ba函数gydF4y2Ba”;gydF4y2Ba

    价值gydF4y2Ba 描述gydF4y2Ba
    “doublelogit”gydF4y2Ba 1 / (1 +gydF4y2BaegydF4y2Ba2gydF4y2BaxgydF4y2Ba)gydF4y2Ba
    “invlogit”gydF4y2Ba 日志(gydF4y2BaxgydF4y2Ba/ (1 -gydF4y2BaxgydF4y2Ba))gydF4y2Ba
    “ismax”gydF4y2Ba 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0gydF4y2Ba
    “分对数”gydF4y2Ba 1 / (1 +gydF4y2BaegydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba)gydF4y2Ba
    “没有”gydF4y2Ba或gydF4y2Ba“身份”gydF4y2Ba xgydF4y2Ba(转换)gydF4y2Ba
    “标志”gydF4y2Ba 1gydF4y2BaxgydF4y2Ba< 0gydF4y2Ba
    为0gydF4y2BaxgydF4y2Ba= 0gydF4y2Ba
    1gydF4y2BaxgydF4y2Ba> 0gydF4y2Ba
    “对称”gydF4y2Ba 2gydF4y2BaxgydF4y2Ba- 1gydF4y2Ba
    “symmetricismax”gydF4y2Ba 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1gydF4y2Ba
    “symmetriclogit”gydF4y2Ba 2 / (1 +gydF4y2BaegydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba) - 1gydF4y2Ba

  • 对于MATLABgydF4y2Ba®gydF4y2Ba函数或您定义的函数,输入其函数句柄。gydF4y2Ba

    Mdl。ScoreTransform = @gydF4y2Ba函数gydF4y2Ba;gydF4y2Ba

    函数gydF4y2Ba必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Bafunction_handlegydF4y2Ba

用于训练ECOC分类器的观察权重,指定为数值向量。gydF4y2BaWgydF4y2Ba有gydF4y2BaNumObservationsgydF4y2Ba元素。gydF4y2Ba

该软件将用于训练的权重规范化,以便gydF4y2Basum (W, omitnan)gydF4y2Ba是gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

用于训练ECOC分类器的非标准化预测器数据,指定为数值矩阵或表格。gydF4y2Ba

每行gydF4y2BaXgydF4y2Ba对应一个观察结果,每一列对应一个变量。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba表格gydF4y2Ba

用于训练ECOC分类器的观察类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。gydF4y2BaYgydF4y2Ba有gydF4y2BaNumObservationsgydF4y2Ba元素,并具有与输入参数相同的数据类型gydF4y2BaYgydF4y2Ba的gydF4y2BafitcecocgydF4y2Ba.gydF4y2Ba(该软件将字符串数组视为字符向量的单元格数组。)gydF4y2Ba

每行gydF4y2BaYgydF4y2Ba的对应行所观察的分类gydF4y2BaXgydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba分类gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

超参数优化属性gydF4y2Ba

此属性是只读的。gydF4y2Ba

超参数的交叉验证优化,指定为gydF4y2BaBayesianOptimizationgydF4y2Ba对象或超参数及相关值的表。属性为非空gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba在创建模型时,名称-值对参数为非空。的价值gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba的设置gydF4y2Ba优化器gydF4y2Ba在gydF4y2BaHyperparameterOptimizationOptionsgydF4y2Ba结构。gydF4y2Ba

的价值gydF4y2Ba优化器gydF4y2Ba场gydF4y2Ba 的价值gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba
“bayesopt”gydF4y2Ba(默认)gydF4y2Ba 类的对象gydF4y2BaBayesianOptimizationgydF4y2Ba
“gridsearch”gydF4y2Ba或gydF4y2Ba“randomsearch”gydF4y2Ba 使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序gydF4y2Ba

对象的功能gydF4y2Ba

紧凑的gydF4y2Ba 减少多类纠错输出码(ECOC)模型的尺寸gydF4y2Ba
compareHoldoutgydF4y2Ba 比较使用新数据的两种分类模型的准确性gydF4y2Ba
crossvalgydF4y2Ba 交叉验证多类纠错输出代码(ECOC)模型gydF4y2Ba
discard金宝appSupportVectorsgydF4y2Ba ECOC模型舍弃金宝app线性SVM二元学习器的支持向量gydF4y2Ba
边缘gydF4y2Ba 多类纠错输出码(ECOC)模型的分类边gydF4y2Ba
收集gydF4y2Ba 收集属性gydF4y2Ba统计和机器学习工具箱gydF4y2Ba来自GPU的对象gydF4y2Ba
incrementalLearnergydF4y2Ba 将多类纠错输出码(ECOC)模型转换为增量学习器gydF4y2Ba
损失gydF4y2Ba 多类纠错输出码(ECOC)模型的分类损失gydF4y2Ba
保证金gydF4y2Ba 多类纠错输出码(ECOC)模型的分类裕度gydF4y2Ba
partialDependencegydF4y2Ba 计算部分依赖关系gydF4y2Ba
plotPartialDependencegydF4y2Ba 创建部分依赖图(PDP)和个别条件期望图(ICE)gydF4y2Ba
预测gydF4y2Ba 利用多类纠错输出码(ECOC)模型对观测数据进行分类gydF4y2Ba
resubEdgegydF4y2Ba 多类纠错输出码(ECOC)模型的再替换分类边gydF4y2Ba
石灰gydF4y2Ba 局部可解释模型不可知解释(LIME)gydF4y2Ba
resubLossgydF4y2Ba 多类纠错输出码(ECOC)模型的再替换分类损失gydF4y2Ba
resubMargingydF4y2Ba 多类纠错输出码(ECOC)模型的重代分类边缘gydF4y2Ba
resubPredictgydF4y2Ba 多类纠错输出码(ECOC)模型中的观测数据分类gydF4y2Ba
沙普利gydF4y2Ba 沙普利值gydF4y2Ba
testckfoldgydF4y2Ba 通过重复交叉验证比较两种分类模型的准确性gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

使用支持向量机(SVM)二元学习器训练多类纠错输出代码(ECOC)模型。金宝appgydF4y2Ba

加载费雪的虹膜数据集。指定预测器数据gydF4y2BaXgydF4y2Ba以及响应数据gydF4y2BaYgydF4y2Ba.gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas;Y =物种;gydF4y2Ba

使用默认选项训练一个多类ECOC模型。gydF4y2Ba

Mdl = fitcecoc(X,Y)gydF4y2Ba
Mdl = ClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingName: 'onevsone'属性,方法gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba模型。默认情况下,gydF4y2BafitcecocgydF4y2Ba使用SVM二元学习器和一对一编码设计。你可以访问gydF4y2BaMdlgydF4y2Ba使用点表示法的属性。gydF4y2Ba

显示类名和编码设计矩阵。gydF4y2Ba

Mdl。一会gydF4y2Ba
ans =gydF4y2Ba3 x1细胞gydF4y2Ba{'setosa'} {'versicolor'} {'virginica'}gydF4y2Ba
编码垫= Mdl。CodingMatrixgydF4y2Ba
CodingMat =gydF4y2Ba3×3gydF4y2Ba1 1 0 -1 0 0 -1 -1gydF4y2Ba

针对三个类的一对一编码设计产生三个二进制学习器。的列gydF4y2BaCodingMatgydF4y2Ba对应于学习器,行对应于类。类的顺序与in的顺序相同gydF4y2BaMdl。一会gydF4y2Ba.例如,gydF4y2BaCodingMat (: 1)gydF4y2Ba是gydF4y2Ba(1;1;0]gydF4y2Ba并表明该软件使用分类为的所有观测值来训练第一个支持向量机二元学习器gydF4y2Ba“setosa”gydF4y2Ba而且gydF4y2Ba“多色的”gydF4y2Ba.因为gydF4y2Ba“setosa”gydF4y2Ba对应于gydF4y2Ba1gydF4y2Ba,是正类;gydF4y2Ba“多色的”gydF4y2Ba对应于gydF4y2Ba1gydF4y2Ba,所以它是负类。gydF4y2Ba

您可以使用单元索引和点表示法访问每个二进制学习器。gydF4y2Ba

Mdl。B我naryLearners{1}第一个二元学习者gydF4y2Ba
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: 'none' Beta: [4x1 double]偏差:1.4505 KernelParameters: [1x1 struct] Properties, MethodsgydF4y2Ba

计算再替换分类误差。gydF4y2Ba

error = resubLoss(Mdl)gydF4y2Ba
误差= 0.0067gydF4y2Ba

训练数据的分类误差很小,但分类器可能是一个过拟合模型。可以使用交叉验证分类器gydF4y2BacrossvalgydF4y2Ba然后计算交叉验证分类误差。gydF4y2Ba

使用支持向量机二元学习器训练ECOC分类器。然后,利用点表示法访问二元学习器的属性,如估计参数。gydF4y2Ba

加载费雪的虹膜数据集。指定花瓣尺寸作为预测器,指定物种名称作为响应。gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas(:,3:4);Y =物种;gydF4y2Ba

使用SVM二元学习器和默认编码设计(一对一)训练ECOC分类器。标准化预测因子并保存支持向量。金宝appgydF4y2Ba

t = templateSVM(gydF4y2Ba“标准化”gydF4y2Ba,真的,gydF4y2Ba“Save金宝appSupportVectors”gydF4y2Ba,真正的);predictorNames = {gydF4y2Ba“petalLength”gydF4y2Ba,gydF4y2Ba“petalWidth”gydF4y2Ba};responseName =gydF4y2Ba“irisSpecies”gydF4y2Ba;classNames = {gydF4y2Ba“setosa”gydF4y2Ba,gydF4y2Ba“多色的”gydF4y2Ba,gydF4y2Ba“virginica”gydF4y2Ba};gydF4y2Ba指定类别顺序gydF4y2BaMdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2BatgydF4y2Ba“ResponseName”gydF4y2BaresponseName,gydF4y2Ba...gydF4y2Ba“PredictorNames”gydF4y2BapredictorNames,gydF4y2Ba“类名”gydF4y2Ba类名)gydF4y2Ba
Mdl = ClassificationECOC PredictorNames: {'petalLength' 'petalWidth'} ResponseName: 'irisSpecies' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingName: 'onevsone'属性,方法gydF4y2Ba

tgydF4y2Ba是包含支持向量机分类选项的模板对象。这个函数gydF4y2BafitcecocgydF4y2Ba为空的(gydF4y2Ba[]gydF4y2Ba)的属性。gydF4y2BaMdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba分类器。的属性gydF4y2BaMdlgydF4y2Ba使用点表示法。gydF4y2Ba

显示类名和编码设计矩阵。gydF4y2Ba

Mdl。一会gydF4y2Ba
ans =gydF4y2Ba3 x1细胞gydF4y2Ba{'setosa'} {'versicolor'} {'virginica'}gydF4y2Ba
Mdl。CodingMatrixgydF4y2Ba
ans =gydF4y2Ba3×3gydF4y2Ba1 1 0 -1 0 0 -1 -1gydF4y2Ba

列对应SVM二元学习器,行对应不同的类。行顺序和gydF4y2Ba一会gydF4y2Ba的属性gydF4y2BaMdlgydF4y2Ba.对于每一列:gydF4y2Ba

  • 1gydF4y2Ba表明gydF4y2BafitcecocgydF4y2Ba使用对应类中的观察结果作为阳性组的成员来训练SVM。gydF4y2Ba

  • 1gydF4y2Ba表明gydF4y2BafitcecocgydF4y2Ba使用对应类中的观测值作为阴性组的成员来训练SVM。gydF4y2Ba

  • 0gydF4y2Ba表示支持向量机不使用对应类中的观测值。gydF4y2Ba

例如,在第一个SVM中,gydF4y2BafitcecocgydF4y2Ba将所有观测值赋给gydF4y2Ba“setosa”gydF4y2Ba或gydF4y2Ba“多色的”gydF4y2Ba,但不是gydF4y2Ba“virginica”gydF4y2Ba.gydF4y2Ba

使用单元格下标和点表示法访问svm的属性。存储每个支持向量机的标准化支持向量。金宝app对支持向量进行非标准化。金宝appgydF4y2Ba

L = size(Mdl.CodingMatrix,2);gydF4y2Ba%支持向量机个数gydF4y2Basv = cell(L,1);gydF4y2Ba为支持向量指数预分配金宝appgydF4y2Ba为gydF4y2Baj = 1:L SVM = mld . binarylearners {j};sv{j} = SVM.金宝appSupportVectors;sv{j} = sv{j}.*支持向量机。Sigma + SVM.Mu;gydF4y2Ba结束gydF4y2Ba

svgydF4y2Ba是包含支持向量机的非标准化支持向量的矩阵单元阵列。金宝appgydF4y2Ba

绘制数据,并确定支持向量。金宝appgydF4y2Ba

图gscatter (X (: 1), (:, 2), Y);持有gydF4y2Ba在gydF4y2Ba标记= {gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“罗”gydF4y2Ba,gydF4y2Ba“波”gydF4y2Ba};gydF4y2Ba%的长度应该是LgydF4y2Ba为gydF4y2Baj = 1:L svs = sv{j};情节(sv (: 1), sv(:, 2),标记{j},gydF4y2Ba...gydF4y2Ba“MarkerSize”gydF4y2Ba,10 + (j - 1)*3);gydF4y2Ba结束gydF4y2Ba标题(gydF4y2Ba“费希尔的虹膜——ECOC支持载体”金宝appgydF4y2Ba) xlabel(predictorNames{1}) ylabel(predictorNames{2}) legend([classNames,{gydF4y2Ba支金宝app持向量-支持向量机1gydF4y2Ba,gydF4y2Ba...gydF4y2Ba支金宝app持向量- SVM 2gydF4y2Ba,gydF4y2Ba支金宝app持向量-支持向量机3gydF4y2Ba}),gydF4y2Ba...gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“最佳”gydF4y2Ba)举行gydF4y2Ba从gydF4y2Ba

图中包含一个轴对象。标题为Fisher’s Iris—ECOC Support Vectors的坐标轴对象包含6个类型金宝app行对象。这些对象代表setosa, versicolica, virginica,支持向量- SVM 1,支持向量- 金宝appSVM 2,支持向量- SVM 3。gydF4y2Ba

你可以通过gydF4y2BaMdlgydF4y2Ba对这些功能:gydF4y2Ba

  • 预测gydF4y2Ba,对新观测结果进行分类gydF4y2Ba

  • resubLossgydF4y2Ba,来估计训练数据的分类误差gydF4y2Ba

  • crossvalgydF4y2Ba,进行10倍交叉验证gydF4y2Ba

对ECOC分类器与SVM二元学习器进行交叉验证,并估计广义分类误差。gydF4y2Ba

加载费雪的虹膜数据集。指定预测器数据gydF4y2BaXgydF4y2Ba以及响应数据gydF4y2BaYgydF4y2Ba.gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas;Y =物种;rng (1);gydF4y2Ba%用于再现性gydF4y2Ba

创建SVM模板,并标准化预测器。gydF4y2Ba

t = templateSVM(gydF4y2Ba“标准化”gydF4y2Ba,真正的)gydF4y2Ba
t =拟合分类支持向量机模板。Alpha: [0x1 double] BoxConstraint: [] CacheSize: [] CachingMethod: " ClipAlphas: [] DeltaGradientTolerance: [] Epsilon: [] GapTolerance: [] kkttolance: [] IterationLimit: [] KernelFunction: " KernelScale: [] KernelOffset: [] kernelpoliialorder: [] NumPrint: [] Nu: [] OutlierFraction: [] removeduplicate: [] ShrinkagePeriod: [] Solver: " StandardizeData: 1 SaveSupportVe金宝appctors: [] VerbosityLevel: [] Version: 2 Method: 'SVM' Type: 'classification'gydF4y2Ba

tgydF4y2Ba为支持向量机模板。大多数模板对象属性是空的。在训练ECOC分类器时,软件将适用的属性设置为默认值。gydF4y2Ba

训练ECOC分类器,并指定分类顺序。gydF4y2Ba

Mdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2BatgydF4y2Ba...gydF4y2Ba“类名”gydF4y2Ba, {gydF4y2Ba“setosa”gydF4y2Ba,gydF4y2Ba“多色的”gydF4y2Ba,gydF4y2Ba“virginica”gydF4y2Ba});gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba分类器。您可以使用点表示法访问它的属性。gydF4y2Ba

旨在gydF4y2BaMdlgydF4y2Ba使用10倍交叉验证。gydF4y2Ba

CVMdl = crossval(Mdl);gydF4y2Ba

CVMdlgydF4y2Ba是一个gydF4y2BaClassificationPartitionedECOCgydF4y2Ba交叉验证ECOC分类器。gydF4y2Ba

估计广义分类误差。gydF4y2Ba

genError = kfoldLoss(cvdl)gydF4y2Ba
genError = 0.0400gydF4y2Ba

广义分类误差为4%,说明ECOC分类器泛化效果较好。gydF4y2Ba

更多关于gydF4y2Ba

全部展开gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

选择功能gydF4y2Ba

你可以使用这些替代算法来训练一个多类模型:gydF4y2Ba

参考文献gydF4y2Ba

[1] Fürnkranz,约翰内斯。“循环式分类。”gydF4y2Baj·马赫。学习。Res。gydF4y2Ba, Vol. 2, 2002, pp. 721-747。gydF4y2Ba

[2] Escalera, S., O. Pujol, P. Radeva。纠错输出码的稀疏设计的三进制码的可分性。gydF4y2BaRecog模式。列托人。gydF4y2Ba, 2009年第3期,第30卷,页285-297。gydF4y2Ba

扩展功能gydF4y2Ba

版本历史gydF4y2Ba

在R2014b中引入gydF4y2Ba