gpt4 book ai didi

matlab - 交叉验证后如何在Matlab中应用学习到的模型

转载 作者:行者123 更新时间:2023-11-30 09:17:40 26 4
gpt4 key购买 nike

使用交叉验证方法对分类器进行训练和测试后,如何使用结果来验证未见过的数据,特别是在自由运行阶段/部署阶段?如何使用学习到的模型?以下代码使用交叉验证来训练和测试数据X。在计算 pred = Predict(svmModel, X(istest,:)); 行之后,我应该如何使用学习到的模型?

part = cvpartition(Y,'Holdout',0.5);
istrain = training(part); % Data for fitting
istest = test(part); % Data for quality assessment
balance_Train=tabulate(Y(istrain))
NumbTrain = sum(istrain); % Number of observations in the training sample
NumbTest = sum(istest);
svmModel = fitcsvm(X(istrain,:),Y(istrain), 'KernelFunction','rbf');
pred = predict(svmModel, X(istest,:));
% compute the confusion matrix
cmat = confusionmat(Y(istest),pred);
acc = 100*sum(diag(cmat))./sum(cmat(:))

最佳答案

clue's in the name :

predict

Predict labels using support vector machine (SVM) classifier

Syntax

label = predict(SVMModel,X)

[label,score] = predict(SVMModel,X)

Description

label = predict(SVMModel,X) returns a vector of predicted class labels for the predictor data in the table or matrix X, based on the trained support vector machine (SVM) classification model SVMModel. The trained SVM model can either be full or compact.

在您问题的代码中,从 pred = ... 开始的代码用于评估 svmModel 对象所做的预测。但是,您可以采用相同的对象并使用它对进一步的输入数据集进行预测 - 或者更好的是,使用所有数据训练第二个模型,并使用该模型对新的、未知的输入。

您似乎不清楚(交叉)验证在模型构建中的作用。您应该使用整个数据集构建部署模型(X,根据您的评论),因为通常更多的数据总是会给您带来更好的模型。为了估计此部署模型的效果,您可以从 X 的子集构建一个或多个模型,并针对不属于该模型训练子集的其余 X 测试每个模型。如果您只执行一次,这称为保留验证;如果您使用多个子集并对结果进行平均,则为交叉验证。

如果出于某种原因,部署的模型与您用于获取验证结果的模型完全相同对您很重要,那么您可以部署在保留的训练分区上训练的模型。但正如我所说,更多的训练数据通常会产生更好的模型。

关于matlab - 交叉验证后如何在Matlab中应用学习到的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com