error using predict function for SVM

2 visualizzazioni (ultimi 30 giorni)
Hi there i am trying to create a SVM model to predict the data from the one that i have attached here and the code
load mec_prop_tempcooling20sec
table_mec_prop = array2table(mec_prop_tempcooling20sec);
table_mec_prop.Properties.VariableNames{4} = 'UTS';
table_mec_prop.Properties.VariableNames{5} = 'EaB';
table_mec_prop.Properties.VariableNames{6} = 'YM';
table_mec_prop.Properties.VariableNames{1} = 'Heating';
table_mec_prop.Properties.VariableNames{2} = 'Build';
table_mec_prop.Properties.VariableNames{3} = 'Cooling';
Mdl_tensile_Gau = fitrsvm(table_mec_prop,'UTS~Heating+Build+Cooling','KernelFunction','gaussian','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_ymodulus_Gau = fitrsvm(table_mec_prop,'YM~Heating+Build+Cooling','KernelFunction','gaussian','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_extension_Gau = fitrsvm(table_mec_prop,'EaB~Heating+Build+Cooling','KernelFunction','gaussian','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_tensile_lin = fitrsvm(table_mec_prop,'UTS~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_ymodulus_lin = fitrsvm(table_mec_prop,'YM~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_extension_lin = fitrsvm(table_mec_prop,'EaB~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
mseGau_tensile = kfoldLoss(Mdl_tensile_Gau);
mseGau_ymodulus = kfoldLoss(Mdl_ymodulus_Gau);
mseGau_extension = kfoldLoss(Mdl_extension_Gau);
mseLin_tensile = kfoldLoss(Mdl_tensile_lin);
mseLin_ymodulus = kfoldLoss(Mdl_ymodulus_lin);
mseLin_extension = kfoldLoss(Mdl_extension_lin);
Mdl_tensile = fitrsvm(table_mec_prop,'UTS~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_ymodulus = fitrsvm(table_mec_prop,'YM~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
Mdl_extension = fitrsvm(table_mec_prop,'EaB~Heating+Build+Cooling','KernelFunction','linear','KernelScale','auto','Standardize',true,'Leaveout','on');
X = mec_prop_tempcooling20sec(:,1:3);
YSVMnew_tensile = predict(Mdl_tensile, X);
YSVMnew_ymodulus = predict(Mdl_ymodulus, X);
YSVMnew_extension = predict(Mdl_extension, X);
After running through the code i have obtained this error
Error using predict (line 84)
No valid system or dataset was specified.
Error in SVM_temp_regression_cooling20sec
(line 31)
YSVMnew_tensile = predict(Mdl_tensile, X);
The .mat file is attached below
Thanks in advance

Risposta accettata

Renee Coetsee
Renee Coetsee il 24 Mar 2017
I was able to run the code without error by removing the name value pair ('Leaveout', 'on) from the function call to "fitrsvm".
I saw in the documentation for "fitrsvm" that setting KFold, Holdout, Leaveout, CrossVal, or CVPartition creates a RegressionPartitionedSVM cross-validated model. Otherwise, it creates a RegressionSVM model.
The predict function is only used with "RegressionSVM" models. In the tips section, it says "If mdl is a cross-validated RegressionPartitionedSVM model, use kfoldpredict instead of predict to predict new response values." See that information at the following link:
Refer to the documentation page for "fitrsvm" for more information:
  1 Commento
Maurice Moh
Maurice Moh il 25 Mar 2017
Hi yeah i have changed it and it has fixed the problem thank you very much.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by