www.gusucode.com > stats 源码程序 matlab案例代码 > stats/ModifyKNNClassifierExample.m
%% Modify KNN Classifier % This example shows how to modify a _k_-nearest neighbor classifier. %% % Construct a KNN classifier for the Fisher iris data as in % <docid:stats_ug.btap7k2>. load fisheriris X = meas; Y = species; Mdl = fitcknn(X,Y,'NumNeighbors',4); %% % Modify the model to use the three nearest neighbors, rather than the % default one nearest neighbor. Mdl.NumNeighbors = 3; %% % Compare the resubstitution predictions and cross-validation loss with the % new number of neighbors. loss = resubLoss(Mdl) rng(10); % For reproducibility CVMdl = crossval(Mdl,'KFold',5); kloss = kfoldLoss(CVMdl) %% % In this case, the model with three neighbors has the same cross-validated % loss as the model with four neighbors (see <docid:stats_ug.btap7l_>). %% % Modify the model to use cosine distance instead of the default, and % examine the loss. To use cosine distance, you must recreate the model % using the exhaustive search method. CMdl = fitcknn(X,Y,'NSMethod','exhaustive','Distance','cosine'); CMdl.NumNeighbors = 3; closs = resubLoss(CMdl) %% % The classifier now has lower resubstitution error than before. %% % Check the quality of a cross-validated version of the new model. CVCMdl = crossval(CMdl); kcloss = kfoldLoss(CVCMdl) %% % |CVCMdl| has a better cross-validated loss than |CVMdl|. However, in % general, improving the resubstitution error does not necessarily produce % a model with better test-sample predictions.