Changeset 3635:8d8e488dcfc8 in orange


Ignore:
Timestamp:
05/08/07 22:37:28 (7 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
b5b0eaaf06184e1ed3debbf05dee4fc830a7fbfa
Message:

SVM pickling

Location:
source/orange
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • source/orange/lib_learner.cpp

    r3631 r3635  
    10961096        printf("error saving svm model"); 
    10971097    } 
    1098     return Py_BuildValue("O(OOOOOs)N", getExportedFunction("__pickleLoaderSVMClassifier"), 
     1098    if(svm->kernelFunc) 
     1099        return Py_BuildValue("O(OOOOsO)N", getExportedFunction("__pickleLoaderSVMClassifier"), 
    10991100                                    self->ob_type, 
    11001101                                    WrapOrange(svm->classVar), 
    11011102                                    WrapOrange(svm->examples), 
    11021103                                    WrapOrange(svm->supportVectors), 
     1104                                    buf.c_str(), 
    11031105                                    WrapOrange(svm->kernelFunc), 
     1106                                    packOrangeDictionary(self)); 
     1107    else 
     1108        return Py_BuildValue("O(OOOOs)N", getExportedFunction("__pickleLoaderSVMClassifier"), 
     1109                                    self->ob_type, 
     1110                                    WrapOrange(svm->classVar), 
     1111                                    WrapOrange(svm->examples), 
     1112                                    WrapOrange(svm->supportVectors), 
    11041113                                    buf.c_str(), 
    11051114                                    packOrangeDictionary(self)); 
     
    11141123    PExampleTable examples; 
    11151124    PExampleTable supportVectors; 
    1116     PyObject* kernel; 
     1125    PKernelFunc kernel; 
    11171126    char *pbuf; 
    1118     int bufSize; 
    1119     if (!PyArg_ParseTuple(args, "OO&O&O&Os#:__pickleLoaderSVMClassifier", &type, cc_Variable, &var, 
    1120         cc_ExampleTable, &examples, cc_ExampleTable, &supportVectors, &kernel, &pbuf, &bufSize)) 
     1127    if (!PyArg_ParseTuple(args, "OO&O&O&s|O&:__pickleLoaderSVMClassifier", &type, cc_Variable, &var, 
     1128        cc_ExampleTable, &examples, cc_ExampleTable, &supportVectors, &pbuf, cc_KernelFunc, &kernel)) 
    11211129        return NULL; 
    11221130    //TCharBuffer buf(pbuf); 
     
    11291137    model->param.learner=NULL; 
    11301138    PSVMClassifier svm=mlnew TSVMClassifier(var, examples, model, NULL); 
    1131     svm->kernelFunc=(TKernelFunc*)((TGCCounter*)kernel)->ptr; 
     1139    svm->kernelFunc=kernel; 
    11321140    svm->supportVectors=supportVectors; 
    11331141    return WrapOrange(svm); 
  • source/orange/svm.cpp

    r3626 r3635  
    36153615    for(i=0;i<model->l;i++){ 
    36163616        svm_node *node=model->SV[i]; 
    3617         while(node->index!=-1) 
    3618             node++; 
     3617        if(model->param.kernel_type!=CUSTOM) 
     3618            while(node->index!=-1) 
     3619                node++; 
    36193620        supportVectors->addExample(mlnew TExample(examples->at(int(node->value)))); 
    36203621    } 
     
    36813682    int svm_type=svm_get_svm_type(model); 
    36823683    int nr_class=svm_get_nr_class(model); 
    3683     svm_node *x=Malloc(svm_node, exlen+1); 
     3684    svm_node *x=Malloc(svm_node, (exlen+1>2)? exlen+1 : 2); 
    36843685    example_to_svm(example, x, -1.0, (model->param.kernel_type==CUSTOM)? 1:0); 
    36853686    double v; 
Note: See TracChangeset for help on using the changeset viewer.