How to correct the error - ClassificationSVM

7 ビュー (過去 30 日間)
vokoyo
vokoyo 2018 年 6 月 16 日
コメント済み: Walter Roberson 2023 年 4 月 25 日
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 日
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true))
svmStruct = fitcsvm(x,group,'HyperparameterOptimizationOptions', struct('showplot',true), 'KernelFunction','rbf','KernelScale',0.5)
  1 件のコメント
Walter Roberson
Walter Roberson 2018 年 6 月 17 日
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 日
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
  1 件のコメント
Walter Roberson
Walter Roberson 2018 年 6 月 17 日
Try different settings for the KernelFunction https://www.mathworks.com/help/stats/fitcsvm.html#bt9w6j6_sep_shared-KernelFunction and for the KernelScale and see what the effects are.

サインインしてコメントする。


vokoyo
vokoyo 2018 年 6 月 17 日
編集済み: vokoyo 2018 年 6 月 17 日
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 件のコメント
Walter Roberson
Walter Roberson 2018 年 6 月 17 日
Students experimenting is very important for studies.

サインインしてコメントする。


vokoyo
vokoyo 2018 年 6 月 18 日
編集済み: vokoyo 2018 年 6 月 18 日
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 件のコメント
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
Walter Roberson
Walter Roberson 2018 年 6 月 18 日
It sounds as if you are calling svm_3d_matlab_vis without passing in any parameters.

サインインしてコメントする。


Don Mathis
Don Mathis 2018 年 6 月 18 日
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 件のコメント
Aishwarya
Aishwarya 2023 年 4 月 25 日
Did you get a solution?

サインインしてコメントする。


Don Mathis
Don Mathis 2023 年 4 月 25 日
編集済み: Don Mathis 2023 年 4 月 25 日
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

カテゴリ

Help Center および File ExchangeClassification Trees についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by