ClassificationPartitionedModel

包:classreg.learning.partition

交叉验证分类模型

描述

ClassificationPartitionedModel是一组在交叉验证折叠上训练的分类模型。使用一种或多种“kfold”方法通过交叉验证评估分类质量:kfoldPredictkfoldLosskfoldMarginkfoldEdge,kfoldfun

每个“kfold”方法都使用在折叠内观测上训练的模型来预测折叠外观测的响应。例如,假设使用五次折叠进行交叉验证。在这种情况下,软件将每个观察结果随机分为五个大小大致相同的组。的培训褶皱包含四组(即大约4/5的数据)和测试褶皱包含另一组(即,大约1/5的数据)。在这种情况下,交叉验证的过程如下:

  • 软件训练第一个模型(存储在CVMdl。训练有素的{1})使用后四组的观测值,并保留第一组的观测值进行验证。

  • 软件训练第二个模型(存储在CVMdl。训练有素的{2})使用第一组和后三组的观测值,保留第二组的观测值进行验证。

  • 软件以类似的方式处理第三到第五个模型。

如果通过调用验证kfoldPredict,它使用第一个模型计算第1组观测值的预测,使用第二个模型计算第2组观测值的预测,依此类推。简而言之,该软件使用在没有该观察的情况下训练的模型来估计每个观察的响应。

建设

CVMdl= crossval (Mdl从分类模型创建交叉验证的分类模型(Mdl).

另外:

  • CVDiscrMdl = fitcdiscr(X,Y,Name,Value)

  • CVKNNMdl = fitcknn(X,Y,名称,值)

  • CVNBMdl = fitcnb(X,Y,名称,值)

  • CVSVMMdl = fitcsvm(X,Y,名称,值)

  • CVTreeMdl = fitctree(X,Y,名称,值)

创建一个交叉验证的模型的名字要么是“CrossVal”“KFold”“坚持”“Leaveout”,或“CVPartition”.有关语法的详细信息,请参见fitcdiscrfitcknnfitcnbfitcsvm,fitctree

输入参数

Mdl

分类模型。Mdl可以是以下任意一个:

  • 用。训练的分类树fitctree

  • 一个判别分析分类器训练使用fitcdiscr

  • 一个朴素贝叶斯分类器训练使用fitcnb

  • 最近邻分类器训练使用fitcknn

  • 支持万博1manbetx向量机分类器训练使用fitcsvm

属性

BinEdges

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

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

您可以重新生成已归档的预测器数据Xbinned通过使用BinEdges训练模型的属性mdl

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分组到箱子中离散化函数。Xbinned =离散化(x,[-inf;边缘{};正]);Xbinned(:,j) = Xbinned;结束
Xbinned包含数值预测器的容器索引,范围从1到容器数。Xbinned类别预测器的值为0。如果X包含S,然后是对应的Xbinned值是年代。

CategoricalPredictors

分类预测指标,指定为正整数向量。CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]).

如果Mdl是训练过的判别分析分类器,那么CategoricalPredictors总是空的([]).

一会

训练模型时使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。

成本

方阵,其中成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是(即行对应真实的类,列对应预测的类)。的行和列的顺序成本中类的顺序对应一会.中的行数和列数成本响应中唯一类的数量。

如果CVModel是交叉验证的ClassificationDiscriminantClassificationKNN,或ClassificationNaiveBayes模型,然后你可以改变它的成本矩阵,例如,CostMatrix,使用点表示法。

CVModel。成本= CostMatrix;

CrossValidatedModel

交叉验证模型的名称,它是一个字符向量。

KFold

交叉验证模型使用的折叠数,为正整数。

ModelParameters

的对象保持参数CVModel

分区

类的划分CVPartition用于创建交叉验证的模型。

PredictorNames

预测器变量名,指定为字符向量的单元格数组。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序。

之前

每个类的先验概率的数字向量。元素的顺序之前中类的顺序对应一会

如果CVModel是交叉验证的ClassificationDiscriminantClassificationNaiveBayes模型,然后你可以改变它的先验向量,例如,priorVector,使用点表示法。

CVModel。之前= priorVector;

ResponseName

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

ScoreTransform

分数转换,指定为字符向量或函数句柄。ScoreTransform表示用于转换预测分类分数的内置转换函数或函数句柄。

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

  • 对于内置函数,请输入字符向量。

    Mdl。ScoreTransform = '函数”;

    该表描述了可使用的内置函数。

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

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

    Mdl。ScoreTransform = @函数

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

训练有素的

训练的学习者,这是一个紧凑的分类模型单元阵列。

W

的比例权重,这是一个有长度的向量n的行数X

X

预测值的矩阵或表格。的每一列X表示一个变量,每一行表示一个观察结果。

Y

类别或字符数组、逻辑或数字向量或字符向量的单元格数组,为每个观察值指定类标签。Y行数和X的每一项Y的对应行中的数据是否响应X

方法

kfoldEdge 未用于训练的观测数据的分类边缘
kfoldLoss 未用于训练的观测数据的分类损失
kfoldMargin 未用于训练的观测值的分类裕度
kfoldPredict 预测不用于训练的观察结果的反应
kfoldfun 交叉验证函数

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象(MATLAB)。

例子

全部折叠

评估k-fold交叉验证误差的分类树模型。

加载费雪的虹膜数据集。

负载fisheriris

使用默认选项训练分类树。

Mdl = fitctree(meas,种);

交叉验证分类树模型。

CVMdl = crossval(Mdl);

估计10倍交叉验证损失。

L = kfoldLoss(cvdl)
L = 0.0533

估计支持向量机算法测试集的正类后验概率。

加载电离层数据集。

负载电离层

训练SVM分类器。指定20%的坚持样本。标准化预测器并指定类顺序是一个很好的实践。

rng (1)%用于再现性CVSVMModel = fitcsvm(X,Y,“坚持”, 0.2,“标准化”,真的,...“类名”, {“b”‘g’});

CVSVMModel是受过训练的ClassificationPartitionedModel旨在分类器。

估计将观测分数映射到被分类为的观测的后验概率的最佳分数函数‘g’

ScoreCVSVMModel = fitSVMPosterior(CVSVMModel);

ScoreSVMModel是受过训练的ClassificationPartitionedModel包含从训练数据估计的最优分数转换函数的交叉验证分类器。

估计样本外正类后验概率。显示前10个样本外观察的结果。

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel);indx = ~isnan(OOSPostProbs(:,2));hoObs = find(索引);%坚持观察数字OOSPostProbs = [hoObs, OOSPostProbs(indx,2)];表(OOSPostProbs (1:10, 1), OOSPostProbs (1:10), 2),...“VariableNames”, {“ObservationIndex”“PosteriorProbability”})
ans =10×2表ObservationIndex后置概率________________ ____________________ 6 0.17378 7 0.89637 8 0.0076609 9 0.91602 16 0.026718 22 4.6081e-06 23 0.9024 24 2.4129e-06 38 0.00042697 41 0.86427

提示

要估计经过训练、交叉验证的SVM分类器的后验概率,请使用fitSVMPosterior