我正在尝试在Matlab中构建一个带交叉验证的kns clasiffier。由于我的MATLAB版本,我使用了knnclassify()
来构建分类器(classKNN = knnclassify (sample_test, sample_training, training_label)
)。
我无法使用crossval()
。
提前致谢。
答案 0 :(得分:1)
在Matlab中有两种方法可以执行K-Nearest Neighbor。第一个是像你一样使用knnclassify()
。但是,此函数将返回预测标签,您无法使用crossval()
。交叉验证是在模型上执行的,而不是在结果上执行的。在Matlab中,模型由对象描述。
crossval()
仅适用于对象(分类器对象,无论是K-NN,SVM等等)。要创建所谓的最近邻分类对象,您需要使用fitcknn()
函数。将训练集和训练标签作为输入(按此顺序),此功能将返回您的对象,您可以在crossval()
中输入该对象。
但是只剩下一件事了:如何预测验证集的标签?为此,您需要使用predict()
函数。给定模型(kNN对象)和验证集作为输入(再次按此顺序),此类函数将返回(如knnclassify()
)预测标签向量。