Matlab交叉验证和K-NN

时间:2016-02-22 17:38:12

标签: matlab machine-learning classification cross-validation knn

我正在尝试在Matlab中构建一个带交叉验证的kns clasiffier。由于我的MATLAB版本,我使用了knnclassify()来构建分类器(classKNN = knnclassify (sample_test, sample_training, training_label))。

我无法使用crossval()

提前致谢。

1 个答案:

答案 0 :(得分:1)

在Matlab中有两种方法可以执行K-Nearest Neighbor。第一个是像你一样使用knnclassify()。但是,此函数将返回预测标签,您无法使用crossval()。交叉验证是在模型上执行的,而不是在结果上执行的。在Matlab中,模型由对象描述。

crossval()仅适用于对象(分类器对象,无论是K-NN,SVM等等)。要创建所谓的最近邻分类对象,您需要使用fitcknn()函数。将训练集和训练标签作为输入(按此顺序),此功能将返回您的对象,您可以在crossval()中输入该对象。
但是只剩下一件事了:如何预测验证集的标签?为此,您需要使用predict()函数。给定模型(kNN对象)和验证集作为输入(再次按此顺序),此类函数将返回(如knnclassify())预测标签向量。