Changeset 3605:039232a71688 in orange


Ignore:
Timestamp:
04/28/07 18:20:26 (7 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
dadad00166e518ecb2b40ad6dddddcbb9c41dfa2
Message:

SVMClassifier pickling

Location:
source/orange
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • source/orange/lib_learner.cpp

    r3576 r3605  
    10391039C_CALL(SVMLearner, Learner, "([examples] -/-> Classifier)") 
    10401040C_NAMED(SVMClassifier, Classifier," ") 
    1041 NO_PICKLE(SVMClassifier) 
     1041//N O _PICKLE(SVMClassifier) 
    10421042 
    10431043PYCLASSCONSTANT_INT(SVMLearner, C_SVC, 0) 
     
    10861086  PyCATCH 
    10871087} 
     1088 
     1089PyObject *SVMClassifier__reduce__(PyObject* self) 
     1090{ 
     1091  PyTRY 
     1092    //TCharBuffer buf(100); 
     1093    CAST_TO(TSVMClassifier, svm); 
     1094    string buf; 
     1095    if (svm_save_model_alt(buf, svm->getModel())){ 
     1096        printf("error saving svm model"); 
     1097    } 
     1098    return Py_BuildValue("O(OOOOs)N", getExportedFunction("__pickleLoaderSVMClassifier"), 
     1099                                    self->ob_type, 
     1100                                    WrapOrange(svm->classVar), 
     1101                                    WrapOrange(svm->examples), 
     1102                                    WrapOrange(svm->supportVectors), 
     1103                                    //WrapOrange(svm->kernelFunc), 
     1104                                    buf.c_str(), 
     1105                                    packOrangeDictionary(self)); 
     1106  PyCATCH 
     1107} 
     1108 
     1109PyObject *__pickleLoaderSVMClassifier(PyObject *, PyObject *args) PYARGS(METH_VARARGS, "(type, packed_data)") 
     1110{ 
     1111  PyTRY 
     1112    PyTypeObject *type; 
     1113    PVariable var; 
     1114    PExampleTable examples; 
     1115    PExampleTable supportVectors; 
     1116    PKernelFunc kernel; 
     1117    char *pbuf; 
     1118    int bufSize; 
     1119    if (!PyArg_ParseTuple(args, "OO&O&O&s#:__pickleLoaderSVMClassifier", &type, cc_Variable, &var, 
     1120        cc_ExampleTable, &examples, cc_ExampleTable, &supportVectors, /*cc_KernelFunc, &kernel,*/  &pbuf, &bufSize)) 
     1121        return NULL; 
     1122    //TCharBuffer buf(pbuf); 
     1123    string buf(pbuf); 
     1124    printf("loading model\n"); 
     1125    svm_model *model=svm_load_model_alt(buf); 
     1126 
     1127    if (!model) 
     1128        return NULL; 
     1129    model->param.learner=NULL; 
     1130    PSVMClassifier svm=mlnew TSVMClassifier(var, examples, model, NULL); 
     1131    svm->kernelFunc=kernel; 
     1132    svm->supportVectors=supportVectors; 
     1133    return WrapOrange(svm); 
     1134  PyCATCH 
     1135} 
     1136   
    10881137 
    10891138PyObject *SVMClassifier_getDecisionValues(PyObject *self, PyObject* args, PyObject *keywords) PYARGS(METH_VARARGS, "(Example) -> list of floats") 
  • source/orange/svm.cpp

    r3591 r3605  
    31493149*/ 
    31503150#include "slist.hpp" 
    3151 int svm_save_model_alt(TCharBuffer& buffer, const svm_model *model){ 
     3151int svm_save_model_alt(string& buffer, const svm_model *model){ 
    31523152    FILE *fp = tmpfile(); 
    31533153    if(fp==NULL) return -1; 
     
    32313231        fprintf(fp, "\n"); 
    32323232    } 
    3233     if (ferror(fp) != 0 || fclose(fp) != 0) return -1; 
    32343233 
    32353234    fseek(fp, SEEK_SET, 0); 
    3236     string tmpbuf; 
     3235    //string tmpbuf; 
    32373236    char str[512]; 
    32383237    while(fgets(str, 512, fp)){ 
    3239         tmpbuf+=str; 
     3238        buffer+=str; 
    32403239    } 
    32413240    //if(!feof(fp)) 
    32423241    //  printf("Error saving svm_model"); 
    3243     buffer.writeInt(tmpbuf.size()+1); 
    3244     printf(tmpbuf.c_str()); 
    3245     buffer.writeBuf((void*)tmpbuf.c_str(), tmpbuf.size()+1); 
    3246     fclose(fp); 
     3242    //buffer.writeInt(tmpbuf.size()+1); 
     3243    //printf(tmpbuf.c_str()); 
     3244    //buffer.writeBuf((void*)tmpbuf.c_str(), tmpbuf.size()+1); 
     3245    if (ferror(fp) != 0 || fclose(fp) != 0) return -1; 
    32473246    return 0; 
    32483247} 
    32493248 
    3250 svm_model *svm_load_model_alt(TCharBuffer& buffer) 
     3249svm_model *svm_load_model_alt(string& buffer) 
    32513250{ 
    32523251    FILE *fp = tmpfile(); 
    32533252    if(fp==NULL) return NULL; 
    3254     int bufflen=buffer.readInt(); 
    3255     char *tmpstr=(char*)malloc(sizeof(char)*bufflen); 
    3256     buffer.readBuf(tmpstr, bufflen); 
    3257     fwrite(tmpstr, sizeof(char), bufflen, fp); 
     3253    //int bufflen=buffer.readInt(); 
     3254    //char *tmpstr=(char*)malloc(sizeof(char)*bufflen); 
     3255    //buffer.readBuf(tmpstr, bufflen); 
     3256    //fwrite(tmpstr, sizeof(char), bufflen, fp); 
     3257    fprintf(fp, buffer.c_str()); 
    32583258    fseek(fp, SEEK_SET, 0); 
    3259     free(tmpstr); 
     3259    //free(tmpstr); 
    32603260     
    32613261    // read parameters 
     
    34443444    model->free_sv = 1; // XXX 
    34453445 
    3446     printf("%i\n",model->param.kernel_type); 
     3446    //printf("%i\n",model->param.kernel_type); 
    34473447    return model; 
    34483448} 
  • source/orange/svm.hpp

    r3591 r3605  
    152152#include "slist.hpp" 
    153153 
    154 svm_model *svm_load_model_alt(TCharBuffer& buffer); 
    155 int svm_save_model_alt(TCharBuffer& buffer, const svm_model *model); 
     154svm_model *svm_load_model_alt(string& buffer); 
     155int svm_save_model_alt(string& buffer, const svm_model *model); 
    156156 
    157157WRAPPER(ExampleGenerator) 
Note: See TracChangeset for help on using the changeset viewer.