Predict function in KNN
3 ビュー (過去 30 日間)
古いコメントを表示
Alberto Azzari
2020 年 4 月 19 日
回答済み: Thiago Henrique Gomes Lobato
2020 年 4 月 19 日
Hi, I'm trying to implement a Leave One Out using knn. This is the code. I'm reporting the error. Thanks
for i=1:loo_cycles
full_index = 1:rows_X;
index_train = full_index(full_index~=i);
x_set = X(i, :);
x_train = X(index_train, :);
y_train = y(index_train, 1);
fprintf("Running loo step %d of %d\n",i, loo_cycles);
cvp = cvpartition(y_train, 'KFold');
KNN = fitcknn(x_train, y_train,'CVPartition', cvp);
y_pred_test(i, 1) = predict(KNN, x_set);
end
Error:
Check for missing argument or incorrect argument data type in call to function 'predict'.
Error in test_knn (line 40)
y_pred_test(i, 1) = predict(KNN, x_set);
0 件のコメント
採用された回答
Thiago Henrique Gomes Lobato
2020 年 4 月 19 日
Your KNN is not a single model to make predictions but rather a RegressionPartitionedModel. Which means it has all the statistics of the cross validation and all individual models for each fold. If you want to make predictions you will have to select one of the trained models, as example:
y_pred_test(i, 1) = predict(KNN.Trained{1}, x_set);
I don't really understand why you would need this internal cross-validation since you're already looping to each data point. For me it would make more sense to simply train the model in all training data for each iteration:
KNN = fitcknn(x_train, y_train);
y_pred_test(i, 1) = predict(KNN, x_set);
Then you have only one model and can use the predict function.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Discriminant Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!