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