static int KernelParm_init(svms_KernelParmObject *self, PyObject *args,
			   PyObject *kwds) {
  const char *buff;
  int bufflen;
  static char *kwlist[] = {"kernel_type","poly_degree","rbf_gamma",
			   "coef_lin","coef_const","custom",NULL};
  LEARN_PARM lp;
  KERNEL_PARM*k=self->kparm;
  set_learning_defaults(&lp, k);
  if (!PyArg_ParseTupleAndKeywords
      (args, kwds, "|iiddds#", kwlist, &k->kernel_type, &k->poly_degree,
       &k->rbf_gamma, &k->coef_lin, &k->coef_const, &buff, &bufflen))
    return -1;
  strncpy(k->custom, buff, sizeof(k->custom)-1);
  k->custom[sizeof(k->custom)-1]='\0';
  return 0;
}
示例#2
0
int read_input_parameters(int argc,char *argv[],char *docfile,char *modelfile,
			   char *restartfile,long *verbosity,
			   LEARN_PARM *learn_parm,KERNEL_PARM *kernel_parm)
{
  long i;
  char type[100];
  
  /* set default */
  set_learning_defaults(learn_parm, kernel_parm);
  strcpy (modelfile, "svm_model");
  strcpy (restartfile, "");
  (*verbosity)=1;
  strcpy(type,"c");

  for(i=1;(i<argc) && ((argv[i])[0] == '-');i++) {
    switch ((argv[i])[1]) 
      { 
      case '?': print_help(); return(-1); 
      case 'z': i++; strcpy(type,argv[i]); break;
      case 'v': i++; (*verbosity)=atol(argv[i]); break;
      case 'b': i++; learn_parm->biased_hyperplane=atol(argv[i]); break;
      case 'i': i++; learn_parm->remove_inconsistent=atol(argv[i]); break;
      case 'f': i++; learn_parm->skip_final_opt_check=!atol(argv[i]); break;
      case 'q': i++; learn_parm->svm_maxqpsize=atol(argv[i]); break;
      case 'n': i++; learn_parm->svm_newvarsinqp=atol(argv[i]); break;
      case '#': i++; learn_parm->maxiter=atol(argv[i]); break;
      case 'h': i++; learn_parm->svm_iter_to_shrink=atol(argv[i]); break;
      case 'm': i++; learn_parm->kernel_cache_size=atol(argv[i]); break;
      case 'c': i++; learn_parm->svm_c=atof(argv[i]); break;
      case 'w': i++; learn_parm->eps=atof(argv[i]); break;
      case 'p': i++; learn_parm->transduction_posratio=atof(argv[i]); break;
      case 'j': i++; learn_parm->svm_costratio=atof(argv[i]); break;
      case 'e': i++; learn_parm->epsilon_crit=atof(argv[i]); break;
      case 'o': i++; learn_parm->rho=atof(argv[i]); break;
      case 'k': i++; learn_parm->xa_depth=atol(argv[i]); break;
      case 'x': i++; learn_parm->compute_loo=atol(argv[i]); break;
      case 't': i++; kernel_parm->kernel_type=atol(argv[i]); break;
      case 'd': i++; kernel_parm->poly_degree=atol(argv[i]); break;
      case 'g': i++; kernel_parm->rbf_gamma=atof(argv[i]); break;
      case 's': i++; kernel_parm->coef_lin=atof(argv[i]); break;
      case 'r': i++; kernel_parm->coef_const=atof(argv[i]); break;
      case 'u': i++; strcpy(kernel_parm->custom,argv[i]); break;
      case 'l': i++; strcpy(learn_parm->predfile,argv[i]); break;
      case 'a': i++; strcpy(learn_parm->alphafile,argv[i]); break;
      case 'y': i++; strcpy(restartfile,argv[i]); break;
      default: //printf("\nUnrecognized option %s!\n\n",argv[i]);
	       //print_help();
	       return(-1);
      }
  }
  //if(i>=argc) {
  //  printf("\nNot enough input parameters!\n\n");
  //  wait_any_key();
  //  print_help();
  //  exit(0);
  //}
  //strcpy (docfile, argv[i]);
  //if((i+1)<argc) {
  //  strcpy (modelfile, argv[i+1]);
  //}
  if(learn_parm->svm_iter_to_shrink == -9999) {
    if(kernel_parm->kernel_type == LINEAR) 
      learn_parm->svm_iter_to_shrink=2;
    else
      learn_parm->svm_iter_to_shrink=100;
  }
  if(strcmp(type,"c")==0) {
    learn_parm->type=CLASSIFICATION;
  }
  else if(strcmp(type,"r")==0) {
    learn_parm->type=REGRESSION;
  }
  else if(strcmp(type,"p")==0) {
    learn_parm->type=RANKING;
  }
  else if(strcmp(type,"o")==0) {
    learn_parm->type=OPTIMIZATION;
  }
  else if(strcmp(type,"s")==0) {
    learn_parm->type=OPTIMIZATION;
    learn_parm->sharedslack=1;
  }
  else {
    //printf("\nUnknown type '%s': Valid types are 'c' (classification), 'r' regession, and 'p' preference ranking.\n",type);
    //wait_any_key();
    //print_help();
    return(-1);
  }    
  if (!check_learning_parms(learn_parm, kernel_parm)) {
     //wait_any_key();
     //print_help();
     return(-1);
  }
  return 0;
}