主要内容

crossval

交叉验证机器学习模型

    描述

    例子

    CVMdl= crossval (Mdl返回一个交叉验证(分区)的机器学习模型(CVMdl)从一个训练有素的模型(Mdl).默认情况下,crossval对训练数据使用10倍交叉验证。

    CVMdl= crossval (Mdl名称,值设置额外的交叉验证选项。只能指定一个名称-值参数。例如,您可以指定折叠的数量或保持抽样比例。

    例子

    全部折叠

    加载电离层数据集。该数据集有34个预测器和351个雷达返回二进制响应,坏的(“b”)或好(‘g’).

    负载电离层rng (1);%用于重现性

    训练支持向量机分金宝app类器。标准化预测器数据并指定类的顺序。

    SVMModel = fitcsvm(X,Y,“标准化”,真的,“类名”, {“b”‘g’});

    SVMModel是经过训练的ClassificationSVM分类器。“b”是负类和‘g’是正类。

    使用10倍交叉验证交叉验证分类器。

    CVSVMModel = crossval(SVMModel)
    CVSVMModel = ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'属性,方法

    CVSVMModel是一个ClassificationPartitionedModel旨在分类器。在交叉验证期间,软件完成以下步骤:

    1. 随机将数据分成10组大小相等的数据。

    2. 在9个集合上训练SVM分类器。

    3. 重复步骤1和2k= 10次。该软件每次省略一个分区,并在其他9个分区上进行训练。

    4. 为每个折叠组合泛化统计信息。

    显示第一个模型CVSVMModel。训练有素的

    FirstModel = CVSVMModel。训练有素的{1}
    FirstModel = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2208 KernelParameters: [1x1 struct] Mu:[0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361…] Sigma:[0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987…]su金宝apppportvector: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法

    FirstModel是10个训练过的分类器中的第一个。它是一个CompactClassificationSVM分类器。

    你可以通过传递来估计泛化误差CVSVMModelkfoldLoss

    指定交叉验证的坚持样本比例。默认情况下,crossval使用10倍交叉验证来交叉验证朴素贝叶斯分类器。但是,对于交叉验证,还有其他几种选择。例如,您可以指定不同的折叠数或保持样本比例。

    加载电离层数据集。该数据集有34个预测器和351个雷达返回二进制响应,坏的(“b”)或好(‘g’).

    负载电离层

    去掉前两个稳定性预测因子。

    X = X(:,3:结束);rng (“默认”);%用于重现性

    使用预测器训练朴素贝叶斯分类器X和类标签Y.推荐的做法是指定类名。“b”是负类和‘g’是正类。fitcnb假设每个预测因子都是条件正态分布的。

    Mdl = fitcnb(X,Y,“类名”, {“b”‘g’});

    Mdl是经过训练的ClassificationNaiveBayes分类器。

    通过指定30%的坚持样本来交叉验证分类器。

    CVMdl = crossval(Mdl,“坚持”, 0.3)
    CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 1 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'属性,方法

    CVMdl是一个ClassificationPartitionedModel交叉验证的朴素贝叶斯分类器。

    显示使用70%的数据训练的分类器的属性。

    TrainedModel = CVMdl。训练有素的{1}
    TrainedModel = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法

    TrainedModel是一个CompactClassificationNaiveBayes分类器。

    通过传递估计泛化误差CVMdlkfoldloss

    kfoldLoss (CVMdl)
    Ans = 0.2095

    样本外误分类误差约为21%。

    通过选择五个最重要的预测因子来减少泛化误差。

    idx = fscmrmr(X,Y);X = X(:,idx(1:5));

    训练新的预测器的朴素贝叶斯分类器。

    Mdlnew = fitcnb(Xnew,Y,“类名”, {“b”‘g’});

    通过指定30%的保留样本交叉验证新的分类器,并估计泛化误差。

    CVMdlnew = crossval(Mdlnew,“坚持”, 0.3);kfoldLoss (CVMdlnew)
    Ans = 0.1429

    样本外误分类误差从约21%减少到约14%。

    训练回归广义相加模型(GAM)fitrgam,并创建一个交叉验证的GAMcrossval还有拒绝选择权。然后,用kfoldPredict使用训练折叠观测训练的模型预测验证折叠观测的响应。

    加载病人数据集。

    负载病人

    创建一个包含预测变量的表(年龄舒张压吸烟者重量性别SelfAssessedHealthStatus)和响应变量(收缩压).

    tbl =表(年龄,舒张压,吸烟者,体重,性别,自我评估健康状态,收缩压);

    训练一个包含线性项的预测项的GAM。

    n . (n .) n .;“收缩”);

    Mdl是一个RegressionGAM模型对象。

    通过指定30%的抵制样本来交叉验证模型。

    rng (“默认”%用于重现性CVMdl = crossval(Mdl,“坚持”, 0.3)
    CVMdl = RegressionPartitionedGAM CrossValidatedModel: 'GAM' PredictorNames: {1x6 cell} CategoricalPredictors: [3 5 6] ResponseName: 'Systolic' NumObservations: 100 KFold: 1 Partition: [1x1 cvpartition] NumTrainedPerFold: [1x1 struct] ResponseTransform: 'none' IsStandardDeviationFit: 0 Properties, Methods

    crossval函数创建一个RegressionPartitionedGAM模型对象CVMdl有拒绝的选项。在交叉验证期间,软件完成以下步骤:

    1. 随机选择并保留30%的数据作为验证数据,使用剩余的数据训练模型。

    2. 存储紧凑的,训练过的模型训练有素的属性的交叉验证模型对象RegressionPartitionedGAM

    方法可以选择不同的交叉验证设置“CrossVal”“CVPartition”“KFold”,或“Leaveout”名称-值参数。

    预测验证倍观测结果的响应kfoldPredict.该函数使用在训练折叠观测上训练的模型预测验证折叠观测的响应。函数赋值训练折叠观察。

    yFit = kfoldPredict(CVMdl);

    找到验证倍观测指标,并创建一个包含观测指标、观测响应值和预测响应值的表。显示表的前八行。

    idx = find(~isnan(yFit));t = table(idx,tbl.Systolic(idx),yFit(idx),...“VariableNames”, {“Obseraction指数”的观测值的预测价值});头(t)
    观察指数观测值预测值_________________ ______________ _______________ 1 124 130.22 6 121 124.38 7 130 125.26 12 115 117.05 20 125 121.82 22 123 116.99 23 114 107 24 128 122.52

    计算验证倍观测值的回归误差(均方误差)。

    L = kfoldLoss(CVMdl)
    L = 43.8715

    输入参数

    全部折叠

    机器学习模型,指定为完全回归或分类模型对象,如下表所示的支持模型。金宝app

    回归模型对象

    模型 全回归模型对象
    高斯过程回归(GPR)模型 RegressionGP(如果你提供定制“ActiveSet”在呼唤fitrgp,那么就不能交叉验证GPR模型。)
    广义相加模型(GAM) RegressionGAM
    神经网络模型 RegressionNeuralNetwork

    分类模型对象

    模型 全分类模型对象
    广义加性模型 ClassificationGAM
    k-最近邻模型 ClassificationKNN
    朴素贝叶斯模型 ClassificationNaiveBayes
    神经网络模型 ClassificationNeuralNetwork
    金宝app单类和二元分类的支持向量机 ClassificationSVM

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

    在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

    例子:crossval (Mdl KFold, 3)指定在交叉验证模型中使用三个折叠。

    交叉验证分区,指定为cvpartition创建的分区对象cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

    你只能指定这四个名称-值参数中的一个:“CVPartition”“坚持”“KFold”,或“Leaveout”

    例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证cvp = cvpartition(500,'KFold',5).然后,您可以使用指定交叉验证的模型“CVPartition”,本量利

    用于抵制验证的数据的一部分,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p,然后软件完成以下步骤:

    1. 随机选择和保留p * 100%的数据作为验证数据,并使用其余的数据训练模型。

    2. 存储紧凑的,训练过的模型训练有素的属性的交叉验证模型。如果Mdl有没有对应的紧凑型对象呢训练有素的包含完整的对象。

    你只能指定这四个名称-值参数中的一个:“CVPartition”“坚持”“KFold”,或“Leaveout”

    例子:“坚持”,0.1

    数据类型:|

    交叉验证模型中使用的折叠数,指定为大于1的正整数。如果你指定KFold, k,然后软件完成以下步骤:

    1. 将数据随机划分为k集。

    2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k- 1集。

    3. 存储k紧凑,训练有素的模型k中的-by-1单元格向量训练有素的属性的交叉验证模型。如果Mdl有没有对应的紧凑型对象呢训练有素的包含完整的对象。

    你只能指定这四个名称-值参数中的一个:“CVPartition”“坚持”“KFold”,或“Leaveout”

    例子:“KFold”,5

    数据类型:|

    保留一个交叉验证标志,指定为“上”“关闭”.如果你指定“Leaveout”,“上”,那么对于每一个n观察(n是否指定了观察数(不包括遗漏的观察数)NumObservations属性),软件完成以下步骤:

    1. 保留一个观察结果作为验证数据,并使用另一个来训练模型n- 1次观察。

    2. 存储n紧凑,训练有素的模型n中的-by-1单元格向量训练有素的属性的交叉验证模型。如果Mdl有没有对应的紧凑型对象呢训练有素的包含完整的对象。

    你只能指定这四个名称-值参数中的一个:“CVPartition”“坚持”“KFold”,或“Leaveout”

    例子:“Leaveout”,“上”

    输出参数

    全部折叠

    交叉验证的机器学习模型,根据输入模型,作为下表中交叉验证(分区)的模型对象之一返回Mdl

    回归模型对象

    模型 回归模型(Mdl 交叉验证模型(CVMdl
    高斯过程回归模型 RegressionGP RegressionPartitionedGP
    广义加性模型 RegressionGAM RegressionPartitionedGAM
    神经网络模型 RegressionNeuralNetwork RegressionPartitionedModel

    分类模型对象

    模型 分类模式(Mdl 交叉验证模型(CVMdl
    广义加性模型 ClassificationGAM ClassificationPartitionedGAM
    k-最近邻模型 ClassificationKNN ClassificationPartitionedModel
    朴素贝叶斯模型 ClassificationNaiveBayes ClassificationPartitionedModel
    神经网络模型 ClassificationNeuralNetwork ClassificationPartitionedModel
    金宝app单类和二元分类的支持向量机 ClassificationSVM ClassificationPartitionedModel

    提示

    • 评估的预测性能Mdl的交叉验证数据kfold功能和性质CVMdl,例如kfoldPredictkfoldLosskfoldMargin,kfoldEdge分类及kfoldPredict而且kfoldLoss回归。

    • 使用name-value参数返回具有分层分区的分区分类器“KFold”“坚持”

    • 创建一个cvpartition对象本量利使用本量利=cvpartition(n, KFold, k).使用name-value参数返回具有非分层分区的分区分类器“CVPartition”,本量利

    选择功能

    与其训练一个模型然后交叉验证它,你可以直接创建一个交叉验证的模型,通过使用一个拟合函数并指定这些名称-值参数之一:“CrossVal”“CVPartition”“坚持”“Leaveout”,或“KFold”

    扩展功能

    版本历史

    在R2012a中介绍

    全部展开

    另请参阅