jyf114
2020-07-24, 21:00
% https://www.mathworks.com/help/stats/bayesopt.html
clear;clc;
load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
vars = [num,dst];
% 设置交叉验证分区和目标函数。为351个值创建5倍交叉验证随机分区,kfold将数据集切分成k份,随机选择k-1做训练集,1做测试集
c = cvpartition(351,'Kfold',5);
% ficknn构造KNN分类器,语法:kNNClassifier = fitcknn(TrainData, TrainLabels, 'NumNeighbors', 1)
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,vars,'Verbose',1,'AcquisitionFunctionName','expected-improvement-plus')
请问这个例子中倒数第二行 ’fun...‘ 如何理解?小x是什么,x.n 是什么,’NSMethod‘ 和 ’exhaustive‘ 是什么?多谢大佬
clear;clc;
load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
vars = [num,dst];
% 设置交叉验证分区和目标函数。为351个值创建5倍交叉验证随机分区,kfold将数据集切分成k份,随机选择k-1做训练集,1做测试集
c = cvpartition(351,'Kfold',5);
% ficknn构造KNN分类器,语法:kNNClassifier = fitcknn(TrainData, TrainLabels, 'NumNeighbors', 1)
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,vars,'Verbose',1,'AcquisitionFunctionName','expected-improvement-plus')
请问这个例子中倒数第二行 ’fun...‘ 如何理解?小x是什么,x.n 是什么,’NSMethod‘ 和 ’exhaustive‘ 是什么?多谢大佬