crossval
交叉验证机器学习模型
描述
例子
交叉验证SVM分类器
加载电离层
数据集。该数据集有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
旨在分类器。在交叉验证期间,软件完成以下步骤:
随机将数据分成10组大小相等的数据。
在9个集合上训练SVM分类器。
重复步骤1和2k= 10次。该软件每次省略一个分区,并在其他9个分区上进行训练。
为每个折叠组合泛化统计信息。
显示第一个模型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
分类器。
你可以通过传递来估计泛化误差CVSVMModel
来kfoldLoss
.
为朴素贝叶斯交叉验证指定保留样本比例
指定交叉验证的坚持样本比例。默认情况下,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
分类器。
通过传递估计泛化误差CVMdl
来kfoldloss
.
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使用crossval
训练回归广义相加模型(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
有拒绝的选项。在交叉验证期间,软件完成以下步骤:
随机选择并保留30%的数据作为验证数据,使用剩余的数据训练模型。
存储紧凑的,训练过的模型
训练有素的
属性的交叉验证模型对象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
输入参数
Mdl
- - - - - -机器学习模型
完整回归模型对象|完整分类模型对象
机器学习模型,指定为完全回归或分类模型对象,如下表所示的支持模型。金宝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
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
你只能指定这四个名称-值参数中的一个:“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证cvp = cvpartition(500,'KFold',5)
.然后,您可以使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -保留验证的部分数据
(0,1)范围内的标量值
用于抵制验证的数据的一部分,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择和保留
p * 100
%的数据作为验证数据,并使用其余的数据训练模型。存储紧凑的,训练过的模型
训练有素的
属性的交叉验证模型。如果Mdl
有没有对应的紧凑型对象呢训练有素的
包含完整的对象。
你只能指定这四个名称-值参数中的一个:“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -折叠数
10
(默认)|大于1的正整数
交叉验证模型中使用的折叠数,指定为大于1的正整数。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为
k
集。对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型
k
- 1集。存储
k
紧凑,训练有素的模型k
中的-by-1单元格向量训练有素的
属性的交叉验证模型。如果Mdl
有没有对应的紧凑型对象呢训练有素的
包含完整的对象。
你只能指定这四个名称-值参数中的一个:“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -保留一个交叉验证标志
“关闭”
(默认)|“上”
保留一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,那么对于每一个n观察(n是否指定了观察数(不包括遗漏的观察数)NumObservations
属性),软件完成以下步骤:
保留一个观察结果作为验证数据,并使用另一个来训练模型n- 1次观察。
存储n紧凑,训练有素的模型n中的-by-1单元格向量
训练有素的
属性的交叉验证模型。如果Mdl
有没有对应的紧凑型对象呢训练有素的
包含完整的对象。
你只能指定这四个名称-值参数中的一个:“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
.
例子:“Leaveout”,“上”
输出参数
CVMdl
-交叉验证的机器学习模型
交叉验证(分区)模型对象
交叉验证的机器学习模型,根据输入模型,作为下表中交叉验证(分区)的模型对象之一返回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
,例如kfoldPredict
,kfoldLoss
,kfoldMargin
,kfoldEdge
分类及kfoldPredict
而且kfoldLoss
回归。使用name-value参数返回具有分层分区的分区分类器
“KFold”
或“坚持”
.创建一个
cvpartition
对象本量利
使用本量利=
cvpartition
(n, KFold, k)
.使用name-value参数返回具有非分层分区的分区分类器“CVPartition”,本量利
.
选择功能
与其训练一个模型然后交叉验证它,你可以直接创建一个交叉验证的模型,通过使用一个拟合函数并指定这些名称-值参数之一:“CrossVal”
,“CVPartition”
,“坚持”
,“Leaveout”
,或“KFold”
.
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
该函数完全支持经过训练的分类模型的GPU金宝app阵列
ClassificationKNN
或ClassificationSVM
对象。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2012a中介绍R2022b:交叉验证的高斯过程回归模型是一个RegressionPartitionedGP
对象
从R2022b开始,交叉验证的高斯过程回归(GPR)模型是一个RegressionPartitionedGP
对象。在以前的版本中,交叉验证的GPR模型是一个RegressionPartitionedModel
对象。
您可以创建RegressionPartitionedGP
用两种方式反对:
从GPR模型对象创建一个交叉验证的模型
RegressionGP
通过使用crossval
对象的功能。方法创建交叉验证的模型
fitrgp
函数并指定一个名称-值参数CrossVal
,CVPartition
,坚持
,KFold
,或Leaveout
.
无论首先训练的是完整的GPR模型还是交叉验证的GPR模型,都不能指定ActiveSet
的值fitrgp
.
另请参阅
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。