主要内容

crossval

交叉验证机器学习模型

    描述

    例子

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

    CVMdl= crossval (Mdl名称,值设置其他交叉验证选项。只能指定一个名称值参数。例如,可以指定折叠数或保持样本比例。

    例子

    全部折叠

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

    负载电离层rng(1);%为了再现性

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

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

    SVMModel是一个培训分类VM分类器。“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'分类预测值:[]类名:{'b''g'}ScoreTransform:'none'Alpha:[78x1 double]偏差:-0.2209内核参数:[1x1结构]Mu:[1x34双]西格玛:[1x34双]支持向量:[78x34双]支持向量标签:[78x1双]属性、方法金宝app

    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.Trained{1}
    TrainedModel=CompactClassificationNaiveBayes ResponseName:'Y'分类预测值:[]类名称:{'b''g'}ScoreTransform:'none'分配名称:{1x32 cell}分配参数:{2x32 cell}属性、方法

    TrainedModel是一个CompactClassificationNaiveBayes分类器。

    通过传递估计泛化误差CVMdlkfoldloss

    kfoldLoss (CVMdl)
    ans = 0.2095

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

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

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

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

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

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

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

    样本外误分类误差从约21%降至约14%。

    利用该方法训练回归广义可加模型fitrgam,并创建一个交叉验证的GAMcrossval和拒绝选项。然后,使用kfoldPredict使用训练叠观察训练的模型预测验证叠观察的反应。

    加载患者数据集。

    负载患者

    创建一个包含预测变量的表(年龄舒张期吸烟者重量性别自我评估健康状况)和响应变量(收缩压).

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

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

    Mdl = fitrgam(资源描述,“收缩”);

    Mdl是一个回归Gam模型对象。

    通过指定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'属性,方法

    crossval函数创建一个RegressionPartitionedGAM模型对象CVMdl选择“钉鞋”。在交叉验证期间,软件完成以下步骤:

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

    2. 将经过训练的小型模型存储在训练有素的属性的交叉验证模型对象RegressionPartitionedGAM

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

    使用kfoldPredict。该函数通过使用在训练折叠观察上训练的模型预测验证折叠观察的响应。该函数指定到训练折叠观察。

    yFit = kfoldPredict (CVMdl);

    找到验证折叠观察索引,并创建一个包含观察索引、观察响应值和预测响应值的表。显示表的前八行。

    idx =找到(~ isnan (yFit));t =表(idx tbl.Systolic (idx) yFit (idx),...“VariableNames”, {“Obseraction指数”的观测值的预测价值});头(t)
    ans=8×3表观测指标观测值预测值(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu1240.22117.05 20 125.82 22 123 116.99 114 107 24 122.52

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

    L=kfoldLoss(CVMdl)
    L = 43.8715

    输入参数

    全部折叠

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

    回归模型对象

    模型 全回归模型对象
    广义加性模型 回归Gam
    神经网络模型 RegressionNeuralNetwork

    分类模型对象

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

    名称-值对的观点

    指定可选的逗号分隔的对名称,值论据。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值

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

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

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

    例子:假设您使用以下方法创建了一个随机分区,用于对500个观测数据进行5倍交叉验证本量利= 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 旨在模型(CompactMdl
    广义加性模型 回归Gam RegressionPartitionedGAM
    神经网络模型 RegressionNeuralNetwork RegressionPartitionedModel

    分类模型对象

    模型 分类模型(Mdl 旨在模型(CompactMdl
    广义加性模型 分类 ClassificationPartitionedGAM
    k最近的邻居模型 ClassificationKNN ClassificationPartitionedModel
    朴素贝叶斯模型 ClassificationNaiveBayes ClassificationPartitionedModel
    神经网络模型 ClassificationNeuralNetwork ClassificationPartitionedModel
    金宝app支持向量机的一类和二值分类 分类VM ClassificationPartitionedModel

    提示

    • 评估的预测性能Mdl对交叉验证数据使用kfold的函数和性质CVMdl,如kfoldPredictkfoldLoss

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

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

    选择功能

    您可以通过使用拟合函数并指定以下名称值参数之一,直接创建交叉验证模型,而不是训练模型然后交叉验证模型:“CrossVal”“CVPartition”“坚持”“Leaveout”,或“KFold”

    扩展功能

    介绍了R2012a