关于第一个问题.将“CrossVal”设置为“on”并将训练后的模型提取到crossval()函数都旨在实现同样的目标.你可以使用其中一种,这取决于你.
kFoldLoss()是一个函数本身,不包含在“CrossVal”标志中.它将交叉验证的模型作为输入.无论您是使用fitcsvm()中的“CrossVal”标志还是使用正确的crossval()函数对此模型进行交叉验证.必须使用此功能是否要评估错误率.
关于第二个问题,简短的回答是肯定的.您必须使用fitcsvm()返回的训练有素的支持向量机模型.交叉验证程序旨在验证您的模型,因此您可以了解其性能(并且10倍交叉验证只是众多可用方法中的一种),但它不执行任何预测.为此,您必须使用predict()函数.我估计你有一个训练集和一个测试集(或验证集)及其各自的标签.使用训练集训练SVM模型,而使用验证集执行预测阶段. predict()的主要输出是模型预测的标签向量,您可以将此类预测标签与验证集的真实标签进行匹配,以在验证中收集错误率.
我建议你避免使用“CrossVal”标志,这样你就可以控制情况,因为你有:
>训练有素的模型,输出fitcsvm()>交叉验证的模型,crossval()的输出,你也可以用kFoldLoss()来评估它的性能>预测标签,在步骤#1中使用predict()和训练模型