This example shows how to estimate the cross-validation loss of an optimized classifier.
Optimize a KNN classifier for the ionosphere data, meaning find parameters that minimize the cross-validation loss. Minimize over nearest-neighborhood sizes from 1 to 30, and over the distance functions 'chebychev', 'euclidean', and 'minkowski'.
For reproducibility, set the random seed, and set the AcquisitionFunctionName option to 'expected-improvement-plus'.
load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
c = cvpartition(351,'Kfold',5);
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,[num,dst],'Verbose',0,...'AcquisitionFunctionName','expected-improvement-plus');
Create a table of points to estimate.
b = categorical({'chebychev','euclidean','minkowski'});
n = [1;1;1;4;2;2];
dst = [b(1);b(2);b(3);b(1);b(1);b(3)];
XTable = table(n,dst);
Estimate the objective and standard deviation of the objective at these points.
Prediction points, specified as a table with D columns, where
D is the number of variables in the problem. The function performs
its predictions on these points.
Objective estimates, returned as an
N-by-1 vector, where
N is the number of rows of
XTable. The estimates are the mean values of the
posterior distribution of the Gaussian process model of the objective
function.
sigma — Standard deviations of objective function N-by-1 vector
Standard deviations of objective function, returned as an
N-by-1 vector, where
N is the number of rows of
XTable. The standard deviations are those of the
posterior distribution of the Gaussian process model of the objective
function.