How to correct the error - ClassificationSVM

My Matlab code -
clear
load fisheriris
% Only use the third and fourth features
x=meas(:,3:4);
gscatter(x(:,1),x(:,2),species);
% Only use the last two categories
x=meas(51:end,3:4);
group=species(51:end,1);
gscatter(x(:,1),x(:,2),group);
% Linear SVM
svmStruct = fitcsvm(x,group,'showplot',true);
% Kernel SVM
svmStruct = fitcsvm(xdata,group,'showplot',true,'kernel_function','rbf');
% Select different sigma
svmStruct = fitcsvm(xdata,group,'showplot',true,'kernel_function','rbf','rbf_sigma',0.5);
But here I get the error message such as below -
Error in fitcsvm (line 316)
obj = ClassificationSVM.fit(X,Y,RemainingArgs{:});
Error in Untitled (line 11)
svmStruct = fitcsvm(x,group,'showplot',true);

 채택된 답변

Walter Roberson
Walter Roberson 2018년 6월 16일
편집: Walter Roberson 2018년 6월 16일

1 개 추천

svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true))
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction','rbf','KernelScale',0.5)

댓글 수: 1

ntry = 10;
kftypes = {'gaussian', 'rbf', 'polynomial'};
nkf = length(kftypes);
svmStructs = cell(ntry,1);
for idx = 1 : ntry
kfidx = randi(nkf);
kftype = kftypes{kfidx};
if ismember(kfidx, [1, 2])
ks = exp(randn());
opts = {'KernelScale', ks};
else
q = randi(20);
opts = {'PolynomialOrder', q}
end
svmStructs{idx} = fitcsvm(x, group, 'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction', kftype, opts{:});
disp(kftype)
celldisp(opts);
pause(2);
end

댓글을 달려면 로그인하십시오.

추가 답변 (5개)

vokoyo
vokoyo 2018년 6월 17일
편집: vokoyo 2018년 6월 17일

0 개 추천

Many thanks for your correct solution however can you please provide further suggestion such as how to modify the output diagram based on adjusting the parameters?
(Herewith refer to the attached file)
Thank you again
vokoyo
vokoyo 2018년 6월 17일
편집: vokoyo 2018년 6월 17일

0 개 추천

Kindly please help and provide your sample codes as a reference (because this is very important for studies)
After all I am not sure how to perform Matlab programming for Supervised Classification and compare all the results
Here can contact with more detail information - tcynotebook@yahoo.com (my mail)

댓글 수: 1

Students experimenting is very important for studies.

댓글을 달려면 로그인하십시오.

vokoyo
vokoyo 2018년 6월 18일
편집: vokoyo 2018년 6월 18일

0 개 추천

This is the Matlab code -
clear
load fisheriris
% Only use the third and fourth features
x=meas(:,3:4);
gscatter(x(:,1),x(:,2),species);
% Only use the last two categories
x=meas(51:end,3:4);
group=species(51:end,1);
gscatter(x(:,1),x(:,2),group);
% Linear SVM
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true))
% Kernel SVM
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction','rbf')
% Select different sigma
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction','rbf','KernelScale',0.1)
ntry = 10;
kftypes = {'gaussian', 'rbf', 'polynomial'};
nkf = length(kftypes);
svmStructs = cell(ntry,1);
for idx = 1 : ntry
kfidx = randi(nkf);
kftype = kftypes{kfidx};
if ismember(kfidx, [1, 2])
ks = exp(randn());
opts = {'KernelScale', ks};
else
q = randi(20);
opts = {'PolynomialOrder', q}
end
svmStructs{idx} = fitcsvm(x, group, 'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction', kftype, opts{:});
disp(kftype)
celldisp(opts);
pause(2);
end
Why the output diagram is the same and not any special result?
(Herewith kindly refer to the attached picture)

댓글 수: 6

For some reason the ShowPlots is not resulting in any plotting, so what you are seeing is the output of your second gscatter() at the top.
Note that your second gscatter() is overwriting the output of your first gscatter() so you never see the result of the first gscatter().
Please do not create a new Answer to respond. Instead, click on "Comment on this Answer" to respond.
vokoyo
vokoyo 2018년 6월 18일
편집: vokoyo 2018년 6월 18일
.
I think you are not understand my question and problem
I have no time to come here every day and write one or two statements
If you truly want to help then please write some useful sample coding (see the attached Project Supervised Classification) - it will be good for understanding and will improve my computing skills
.
"I have no time to come here every day and write one or two statements"
But you expect other people to have plenty of time to write your homework for you.
"I think you are not understand my question and problem"
I understood your question. The answer is as I posted: fitcsvm() is not plotting anything. All you are seeing is what you plot with you gscatter() calls.
If the plotting from fitcsvm() was working, then what it would be showing is progress towards finding the best fit.
vokoyo
vokoyo 2018년 6월 18일
편집: vokoyo 2018년 6월 18일
The more you write the more problems I get
svm_3d_matlab_vis
Not enough input arguments.
Error in svm_3d_matlab_vis (line 2)
sv = svmStruct.SupportVectors;
I think I need to stop here
Anyhow thank for the first answer
It sounds as if you are calling svm_3d_matlab_vis without passing in any parameters.

댓글을 달려면 로그인하십시오.

Don Mathis
Don Mathis 2018년 6월 18일

0 개 추천

FITCSVM does not have an argument named 'showplot'. When I run your original code in R2018a I get this:
Error using classreg.learning.FitTemplate/fillIfNeeded (line 612)
showplot is not a valid parameter name.
Error in classreg.learning.FitTemplate.make (line 124)
temp = fillIfNeeded(temp,type);
Error in ClassificationSVM.template (line 235)
temp = classreg.learning.FitTemplate.make('SVM','type','classification',varargin{:});
Error in ClassificationSVM.fit (line 239)
temp = ClassificationSVM.template(varargin{:});
Error in fitcsvm (line 316)
obj = ClassificationSVM.fit(X,Y,RemainingArgs{:});
Error in Untitled3 (line 11)
svmStruct = fitcsvm(x,group,'showplot',true);

댓글 수: 6

svmtrain() had 'showplot' and 'rbf_sigma' -- but svmtrain() has been replaced by fitcsvm. Which unfortunately has a more confusing user interface.
I have the same error as the above, could you please provide the workaround for this?
Thank You
As I posted above, you now need to use 'Hyperparameteroptimizationoptions', struct('Showplots', true)
AKSHATA BHAT
AKSHATA BHAT 2021년 11월 20일
편집: Walter Roberson 2023년 4월 25일
even after making the changes, my code is giving following error:
My code is in the attached file. Kindly advice me about the same.
Error using classreg.learning.FitTemplate/fillIfNeeded (line 714)
showplot is not a valid parameter name.
Error in classreg.learning.FitTemplate.make (line 140)
temp = fillIfNeeded(temp,type);
Error in ClassificationSVM.template (line 235)
temp = classreg.learning.FitTemplate.make('SVM','type','classification',varargin{:});
Error in ClassificationSVM.fit (line 239)
temp = ClassificationSVM.template(varargin{:});
Error in fitcsvm (line 342)
obj = ClassificationSVM.fit(X,Y,RemainingArgs{:});
Error in DetectDisease_GUI>pushbutton5_Callback (line 297)
svmStruct = fitcsvm(data(train,:),groups(train),'showplot',false,'kernel_function','linear');
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in DetectDisease_GUI (line 41)
gui_mainfcn(gui_State, varargin{:});
Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)DetectDisease_GUI('pushbutton5_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.
Aishwarya
Aishwarya 2023년 4월 25일
Did you get a solution?

댓글을 달려면 로그인하십시오.

Don Mathis
Don Mathis 2023년 4월 25일
편집: Don Mathis 2023년 4월 25일

0 개 추천

svmtrain() was replaced by fitcsvm(), and fitcsvm does not have a 'showplot' argument. Making a 2D plot of data points and support vectors in not built-in to fitcsvm, nor the object that it returns, ClassificationSVM.
If you have a 2D input space and you want to plot points and support vectors, you can see an example of how to do that here: https://www.mathworks.com/help/stats/classificationsvm.html#bt7go4d

카테고리

태그

질문:

2018년 6월 16일

댓글:

2023년 4월 25일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by