"No valid system or dataset was specified" 在 MATLAB 中使用 predict()
"No valid system or dataset was specified" while using predict() in MATLAB
我正在尝试使用 SVM 将我的输入特征分为两个 类。我想使用 10 折交叉验证来训练 SVM 分类器。我正在使用 MATLAB 内置函数。但是在使用 predict()
函数和 crossval()
函数时,出现错误:
No valid system or dataset was specified.
有谁知道如何解决这个问题?
Training_Features = X;
Training_Labels = Y;
SVMModel =
fitcsvm(Training_Features,Training_Labels,'KernelFunction','RBF');
CVSVMModel = crossval(SVMModel);
[Predict_Labels,Predict_Scores] =
predict(CVSVMModel,Training_Features);
我认为您对交叉验证功能的理解有误。您的 CVSVMModel
是所谓的 ClassificationPartitionedModel
,它没有任何功能 predict()
,因为交叉验证用于在使用整个数据集(未交叉验证)训练模型之前测试模型的泛化.
我建议如下:
- 调用
[Predict_Labels,Predict_Scores] = kfoldPredict(CVSVMModel);
以查看它在交叉验证期间对每个验证数据集的表现如何
- 如果您满意,请使用整个数据集训练新的
SVMModel
并使用该数据集进行预测。
编辑:
ClassificationPartitionedModel
是模型的集合(在您的例子中是 10 个不同的模型)。您可以通过以下方式访问甚至调用 predict()
:
[Predict_Labels,Predict_Scores] = predict(CVSVMModel.Trained{1, 1},X);
我正在尝试使用 SVM 将我的输入特征分为两个 类。我想使用 10 折交叉验证来训练 SVM 分类器。我正在使用 MATLAB 内置函数。但是在使用 predict()
函数和 crossval()
函数时,出现错误:
No valid system or dataset was specified.
有谁知道如何解决这个问题?
Training_Features = X;
Training_Labels = Y;
SVMModel =
fitcsvm(Training_Features,Training_Labels,'KernelFunction','RBF');
CVSVMModel = crossval(SVMModel);
[Predict_Labels,Predict_Scores] =
predict(CVSVMModel,Training_Features);
我认为您对交叉验证功能的理解有误。您的 CVSVMModel
是所谓的 ClassificationPartitionedModel
,它没有任何功能 predict()
,因为交叉验证用于在使用整个数据集(未交叉验证)训练模型之前测试模型的泛化.
我建议如下:
- 调用
[Predict_Labels,Predict_Scores] = kfoldPredict(CVSVMModel);
以查看它在交叉验证期间对每个验证数据集的表现如何 - 如果您满意,请使用整个数据集训练新的
SVMModel
并使用该数据集进行预测。
编辑:
ClassificationPartitionedModel
是模型的集合(在您的例子中是 10 个不同的模型)。您可以通过以下方式访问甚至调用 predict()
:
[Predict_Labels,Predict_Scores] = predict(CVSVMModel.Trained{1, 1},X);