[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