error using predict function for SVM
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Maurice Moh
am 21 Mär. 2017
Kommentiert: Maurice Moh
am 25 Mär. 2017
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
0 Kommentare
Akzeptierte Antwort
Renee Coetsee
am 24 Mär. 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:
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Support Vector Machine Regression finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!