SVR errors

Issue #1426 closed
Dimitris Poursanidis created an issue

Good morning

I was testing the use of SVR regression unmixing with the same data as i use in RFR (runs smoothly) and have the following errors:

QGIS version: 3.24.3-Tisler
QGIS code revision: cf22b74e
Qt version: 5.15.3
Python version: 3.9.5
GDAL version: 3.4.3
GEOS version: 3.10.2-CAPI-1.16.0
PROJ version: Rel. 9.0.0, March 1st, 2022
PDAL version: 2.3.0 (git-version: 0a6ef5)
Algorithm started at: 2022-09-06T11:50:00
Algorithm 'Regression-based unmixing' starting…
Input parameters:
{ 'allowWithinClassMixtures' : True, 'background' : 0, 'classLikelihoods' : '', 'dataset' : 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/66d166e98a164fd6a6df313ee42ea071/outputClassificationDataset.pkl', 'ensembleSize' : 3, 'includeEndmember' : True, 'mixingLikelihoods' : '0.5, 0.5', 'n' : 1000, 'outputClassification' : 'TEMPORARY_OUTPUT', 'outputFraction' : 'TEMPORARY_OUTPUT', 'raster' : 'F:/PRISMA HERAKLION 2020/4_Paper/4Students/Prisma_2020__shifted_to__Her2015.tif', 'regressor' : "from sklearn.pipeline import make_pipeline\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.svm import SVR\n\nsvr = SVR()\nparam_grid = {'kernel': ['rbf'],\n 'epsilon': 0.,\n 'gamma': [0.001, 0.01, 0.1, 1, 10, 100, 1000],\n 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]}\ntunedSVR = GridSearchCV(cv=3, estimator=svr, scoring='neg_mean_absolute_error', param_grid=param_grid)\nregressor = make_pipeline(StandardScaler(), tunedSVR)", 'robustFusion' : False }

Create ensemble
Unable to execute algorithm
Traceback (most recent call last):
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\enmapboxprocessing\algorithm\fitregressoralgorithmbase.py", line 67, in checkParameterValues
self.parameterAsRegressor(parameters, self.P_REGRESSOR, context)
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\site-packages\typeguard_init_.py", line 903, in wrapper
retval = func(*args, **kwargs)
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\enmapboxprocessing\algorithm\fitregressoralgorithmbase.py", line 58, in parameterAsRegressor
exec(code, namespace)
File "<string>", line 11, in <module>
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\utils\validation.py", line 63, in inner_f
return f(*args, **kwargs)
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\model_selection_search.py", line 1292, in init
_check_param_grid(param_grid)
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\model_selection_search.py", line 400, in _check_param_grid
raise ValueError("Parameter grid for parameter ({0}) needs to"
ValueError: Parameter grid for parameter (epsilon) needs to be a list or numpy array, but got (<class 'float'>). Single values need to be wrapped in a list with one element.

Execution failed after 0.44 seconds

Loading resulting layers
Algorithm 'Regression-based unmixing' finished
QGIS version: 3.24.3-Tisler
QGIS code revision: cf22b74e
Qt version: 5.15.3
Python version: 3.9.5
GDAL version: 3.4.3
GEOS version: 3.10.2-CAPI-1.16.0
PROJ version: Rel. 9.0.0, March 1st, 2022
PDAL version: 2.3.0 (git-version: 0a6ef5)
Algorithm started at: 2022-09-06T11:54:36
Algorithm 'Regression-based unmixing' starting…
Input parameters:
{ 'allowWithinClassMixtures' : True, 'background' : 0, 'classLikelihoods' : '', 'dataset' : 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/66d166e98a164fd6a6df313ee42ea071/outputClassificationDataset.pkl', 'ensembleSize' : 3, 'includeEndmember' : True, 'mixingLikelihoods' : '0.5, 0.5', 'n' : 1000, 'outputClassification' : 'TEMPORARY_OUTPUT', 'outputFraction' : 'TEMPORARY_OUTPUT', 'raster' : 'F:/PRISMA HERAKLION 2020/4_Paper/4Students/Prisma_2020__shifted_to__Her2015.tif', 'regressor' : "from sklearn.pipeline import make_pipeline\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.svm import SVR\n\nsvr = SVR()\nparam_grid = {'kernel': ['poly'],\n 'epsilon': 0.,\n 'coef0': [0],\n 'degree': [3],\n 'gamma': [0.001, 0.01, 0.1, 1, 10, 100, 1000],\n 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]}\ntunedSVR = GridSearchCV(cv=3, estimator=svr, scoring='neg_mean_absolute_error', param_grid=param_grid)\nregressor = make_pipeline(StandardScaler(), tunedSVR)", 'robustFusion' : False }

Create ensemble
Unable to execute algorithm
Traceback (most recent call last):
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\enmapboxprocessing\algorithm\fitregressoralgorithmbase.py", line 67, in checkParameterValues
self.parameterAsRegressor(parameters, self.P_REGRESSOR, context)
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\site-packages\typeguard_init_.py", line 903, in wrapper
retval = func(*args, **kwargs)
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\enmapboxprocessing\algorithm\fitregressoralgorithmbase.py", line 58, in parameterAsRegressor
exec(code, namespace)
File "<string>", line 13, in <module>
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\utils\validation.py", line 63, in inner_f
return f(*args, **kwargs)
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\model_selection_search.py", line 1292, in init
_check_param_grid(param_grid)
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\model_selection_search.py", line 400, in _check_param_grid
raise ValueError("Parameter grid for parameter ({0}) needs to"
ValueError: Parameter grid for parameter (epsilon) needs to be a list or numpy array, but got (<class 'float'>). Single values need to be wrapped in a list with one element.

Execution failed after 0.35 seconds

Loading resulting layers
Algorithm 'Regression-based unmixing' finished
QGIS version: 3.24.3-Tisler
QGIS code revision: cf22b74e
Qt version: 5.15.3
Python version: 3.9.5
GDAL version: 3.4.3
GEOS version: 3.10.2-CAPI-1.16.0
PROJ version: Rel. 9.0.0, March 1st, 2022
PDAL version: 2.3.0 (git-version: 0a6ef5)
Algorithm started at: 2022-09-06T11:54:44
Algorithm 'Regression-based unmixing' starting…
Input parameters:
{ 'allowWithinClassMixtures' : True, 'background' : 0, 'classLikelihoods' : '', 'dataset' : 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/66d166e98a164fd6a6df313ee42ea071/outputClassificationDataset.pkl', 'ensembleSize' : 3, 'includeEndmember' : True, 'mixingLikelihoods' : '0.5, 0.5', 'n' : 1000, 'outputClassification' : 'TEMPORARY_OUTPUT', 'outputFraction' : 'TEMPORARY_OUTPUT', 'raster' : 'F:/PRISMA HERAKLION 2020/4_Paper/4Students/Prisma_2020__shifted_to__Her2015.tif', 'regressor' : "from sklearn.pipeline import make_pipeline\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.multioutput import MultiOutputRegressor\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.svm import LinearSVR\n\nsvr = LinearSVR()\nparam_grid = {'epsilon': [0.], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]}\ntunedSVR = GridSearchCV(cv=3, estimator=svr, scoring='neg_mean_absolute_error', param_grid=param_grid)\nscaledAndTunedSVR = make_pipeline(StandardScaler(), tunedSVR)\nregressor = MultiOutputRegressor(scaledAndTunedSVR)", 'robustFusion' : False }

Create ensemble
Traceback (most recent call last):
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\site-packages\typeguard_init_.py", line 903, in wrapper
retval = func(*args, **kwargs)
File "C:\Users/DimitrisPoursanidis/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\enmapboxplugin\enmapboxprocessing\algorithm\fitregressoralgorithmbase.py", line 89, in processAlgorithm
regressor.fit(dump.X, dump.y.ravel())
File "C:\Users\DimitrisPoursanidis\AppData\Roaming\Python\Python39\site-packages\sklearn\multioutput.py", line 168, in fit
raise ValueError("y must have at least two dimensions for "
ValueError: y must have at least two dimensions for multi-output regression but has only one.

Execution failed after 0.36 seconds

Loading resulting layers
Algorithm 'Regression-based unmixing' finished
QGIS version: 3.24.3-Tisler
QGIS code revision: cf22b74e
Qt version: 5.15.3
Python version: 3.9.5
GDAL version: 3.4.3
GEOS version: 3.10.2-CAPI-1.16.0
PROJ version: Rel. 9.0.0, March 1st, 2022
PDAL version: 2.3.0 (git-version: 0a6ef5)
Algorithm started at: 2022-09-06T11:54:49
Algorithm 'Regression-based unmixing' starting…
Input parameters:
{ 'allowWithinClassMixtures' : True, 'background' : 0, 'classLikelihoods' : '', 'dataset' : 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/66d166e98a164fd6a6df313ee42ea071/outputClassificationDataset.pkl', 'ensembleSize' : 3, 'includeEndmember' : True, 'mixingLikelihoods' : '0.5, 0.5', 'n' : 1000, 'outputClassification' : 'TEMPORARY_OUTPUT', 'outputFraction' : 'TEMPORARY_OUTPUT', 'raster' : 'F:/PRISMA HERAKLION 2020/4_Paper/4Students/Prisma_2020__shifted_to__Her2015.tif', 'regressor' : 'from sklearn.ensemble import RandomForestRegressor\nregressor = RandomForestRegressor(n_estimators=100, oob_score=True)', 'robustFusion' : False }

Create ensemble
Aggregate runs
Prepare fraction layer
Prepare classification layer
Execution completed in 27.99 seconds
Execution completed in 28.03 seconds
Results:
{'outputClassification': 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/76b8c43f261b411cb10f6af4f5f50559/outputClassification.tif',
'outputFraction': 'C:/Users/DimitrisPoursanidis/AppData/Local/Temp/processing_nzlYXO/34f25b967a9c4f1988469650623c8c7b/outputFraction.tif',
'outputFractionVariation': None}

Loading resulting layers
Algorithm 'Regression-based unmixing' finished

You can see the latest which is the RFR, that works while all SVR fails.

Any idea?

I use the Version 3.10.3.20220824T155109.master <unknow in QGIS 3.24.3-Tisler

Comments (2)

  1. Log in to comment