0

我想在Matlab中用交叉驗證來構建一個knn clasiffier。由於我的MATLAB版本,我已經使用knnclassify()來構建分類器(classKNN = knnclassify (sample_test, sample_training, training_label))。我不能夠使用crossval()那個。Matlab交叉驗證和K-NN

在此先感謝。

回答

1

有兩種方法可以在Matlab中執行K-最近鄰。第一個是像你那樣使用knnclassify()。但是,此功能將返回預測標籤,因此您無法使用crossval()。交叉驗證在模型上執行,而不是在結果上執行。在Matlab中,該模型由對象來描述。

crossval()只適用於對象(分類器對象,無論是K-NN,SVM等等)。爲了創建所謂的最近鄰居分類對象,您需要使用fitcknn()函數。給定訓練集和訓練標籤作爲輸入(按此順序),此功能將返回您的對象,您可以在crossval()中輸入該對象。
剩下的只有一件事:我如何預測我的驗證集的標籤?爲了做到這一點,您需要使用predict()函數。給定模型(kNN對象)和驗證集作爲輸入(按此順序),此函數將返回(如在knnclassify()中)預測的標籤向量。