[Scipy-svn] r2124 - in trunk/Lib/sandbox/svm: . tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Tue Jul 25 06:17:16 EDT 2006
Author: fullung
Date: 2006-07-25 05:16:53 -0500 (Tue, 25 Jul 2006)
New Revision: 2124
Modified:
trunk/Lib/sandbox/svm/model.py
trunk/Lib/sandbox/svm/tests/test_regression.py
Log:
Make sure custom kernels are only used with precomputed datasets.
Modified: trunk/Lib/sandbox/svm/model.py
===================================================================
--- trunk/Lib/sandbox/svm/model.py 2006-07-25 09:32:55 UTC (rev 2123)
+++ trunk/Lib/sandbox/svm/model.py 2006-07-25 10:16:53 UTC (rev 2124)
@@ -1,5 +1,6 @@
from ctypes import POINTER, c_double, c_int
+from dataset import LibSvmPrecomputedDataSet
from kernel import *
from predict import *
import libsvm
@@ -45,6 +46,9 @@
self.param = param
def fit(self, dataset, PredictorType=LibSvmPredictor):
+ if self.kernel.kernel_type == libsvm.PRECOMPUTED and \
+ not isinstance(dataset, LibSvmPrecomputedDataSet):
+ raise ValueError, 'kernel requires a precomputed dataset'
problem = dataset._create_svm_problem()
dataset._update_svm_parameter(self.param)
self._check_problem_param(problem, self.param)
Modified: trunk/Lib/sandbox/svm/tests/test_regression.py
===================================================================
--- trunk/Lib/sandbox/svm/tests/test_regression.py 2006-07-25 09:32:55 UTC (rev 2123)
+++ trunk/Lib/sandbox/svm/tests/test_regression.py 2006-07-25 10:16:53 UTC (rev 2124)
@@ -113,7 +113,7 @@
[(1, 0.1, 0.0), (2, -0.2, 1.3), (3, 0.3, -0.3)]]
#kernels += [SigmoidKernel(gamma, coef0)
# for gamma, coef0 in [(0.2, -0.5), (-0.5, 1.5)]]
- #kernels += [CustomKernel(f) for f in [kernelf, kernelg]]
+ kernels += [CustomKernel(f) for f in [kernelf, kernelg]]
return kernels
def check_all(self):
@@ -126,9 +126,14 @@
LibSvmEpsilonRegressionModel(kernel, 1.0, 2.0),
LibSvmNuRegressionModel(kernel, 0.4, 0.5)
]
- fitargs = [
- (trndata, LibSvmPredictor),
- (trndata, LibSvmPythonPredictor),
+ fitargs = []
+ # CustomKernel needs a precomputed dataset
+ if not isinstance(kernel, CustomKernel):
+ fitargs += [
+ (trndata, LibSvmPredictor),
+ (trndata, LibSvmPythonPredictor),
+ ]
+ fitargs += [
(pctrndata, LibSvmPredictor),
(pctrndata, LibSvmPythonPredictor)
]
More information about the Scipy-svn
mailing list