亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? svm_nu.cpp

?? svm算法的實現分類技術
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
#include "svm_nu.h"/** * * nu SVM * */void svm_nu_regression_c::init(kernel_c* new_kernel, parameters_c* new_parameters){  svm_c::init(new_kernel,new_parameters);  lambda_nu = 0;  sum_alpha_nu = 0;  qp.m = 2;  epsilon_pos=0;  epsilon_neg=0;  if(new_parameters->realC <= 0){    new_parameters->realC =1;  };  nu = new_parameters->nu * new_parameters->realC;};SVMFLOAT svm_nu_regression_c::nabla(const SVMINT i){  if(is_alpha_neg(i) > 0){    return( sum[i] - all_ys[i]);  }  else{    return(-sum[i] + all_ys[i]);  };};void svm_nu_regression_c::reset_shrinked(){  svm_c::reset_shrinked();  sum_alpha_nu = 0;};int svm_nu_regression_c::is_alpha_neg(const SVMINT i){  // variable i is alpha*  int result;  if(all_alphas[i] > 0){    result = 1;  }  else if(all_alphas[i] == 0){    SVMFLOAT k = sum[i] - all_ys[i] + lambda_eq;    if(k+lambda_nu>0){      result = -1;    }    else if(-k+lambda_nu>0){      result = 1;    }    else{      result = 2*((i+at_bound[i])%2)-1;    };  }  else{    result = -1;  };  return result;};SVMFLOAT svm_nu_regression_c::lambda(const SVMINT i){  // size lagrangian multiplier of the active constraint  SVMFLOAT alpha;  SVMFLOAT result = 0;  alpha=all_alphas[i];  if(alpha>is_zero){    // alpha*    if(alpha-Cneg >= - is_zero){      // upper bound active      result = -lambda_eq-lambda_nu-nabla(i);    }    else{      result = -abs(nabla(i)+lambda_eq+lambda_nu);    };  }  else if(alpha >= -is_zero){    // lower bound active    if(is_alpha_neg(i) > 0){      result = nabla(i) + lambda_eq+lambda_nu;    }    else{      result = nabla(i)-lambda_eq+lambda_nu;    };  }  else if(alpha+Cpos <= is_zero){    // upper bound active    result = lambda_eq -lambda_nu - nabla(i);  }  else{    result = -abs(nabla(i)-lambda_eq+lambda_nu);  };  return result;};int svm_nu_regression_c::feasible(const SVMINT i){  // is direction i feasible to minimize the target function  // (includes which_alpha==0)  if(at_bound[i] >= shrink_const){ return 0; };  SVMFLOAT alpha;  SVMFLOAT result;  alpha=all_alphas[i];  //  feasible_epsilon=-1;  if(alpha-Cneg >= - is_zero){    // alpha* at upper bound    result = -lambda_eq-lambda_nu-nabla(i);    if(result>=-feasible_epsilon){      return 0;     };  }  else if((alpha<=is_zero) && (alpha >= -is_zero)){    // lower bound active    if(is_alpha_neg(i) > 0){      result = nabla(i) + lambda_eq+lambda_nu;    }    else{      result = nabla(i)-lambda_eq+lambda_nu;    };    if(result>=-feasible_epsilon){      return 0;     };  }  else if(alpha+Cpos <= is_zero){    // alpha at upper bound    result = lambda_eq -lambda_nu- nabla(i);    if(result>=-feasible_epsilon){      return 0;     };  }  else{    // not at bound    result= abs(nabla(i)+is_alpha_neg(i)*lambda_eq+lambda_nu);    if(result<=feasible_epsilon){      return 0;     };  };  return 1;};void svm_nu_regression_c::init_optimizer(){  lambda_nu_WS = 0;  lambda_nu = 0;  sum_alpha_nu=0;  qp.m = 2;  svm_c::init_optimizer();  smo.init(parameters->is_zero,parameters->convergence_epsilon,working_set_size*working_set_size*10);  epsilon_pos=0;  epsilon_neg=0;  Cpos /= (SVMFLOAT)examples_total;  Cneg /= (SVMFLOAT)examples_total;};void svm_nu_regression_c::project_to_constraint(){  SVMFLOAT alpha;  SVMFLOAT my_alpha_sum=sum_alpha;  SVMFLOAT my_alpha_nu_sum=sum_alpha_nu-nu;  SVMINT total_pos = 0;  SVMINT total_neg = 0;  SVMINT i;  for(i=0;i<examples_total;i++){    alpha = all_alphas[i];    my_alpha_sum += alpha;    my_alpha_nu_sum += abs(alpha);    if((alpha>is_zero) && (alpha-Cneg < -is_zero)){      total_neg++;    }    else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){      total_pos++;    };  };  //project  if((total_pos > 0) && (total_neg > 0)){    for(i=0;i<examples_total;i++){      alpha = all_alphas[i];      if((alpha>is_zero) && (alpha-Cneg < -is_zero)){	all_alphas[i] -= (my_alpha_sum+my_alpha_nu_sum)/2/total_neg;      }      else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){	all_alphas[i] -= (my_alpha_sum-my_alpha_nu_sum)/2/total_pos;      };    };  };};int svm_nu_regression_c::convergence(){  long time_start = get_time();  SVMFLOAT pos_sum = 0;  SVMFLOAT neg_sum = 0;  SVMINT total=0;  SVMFLOAT alpha_sum=0;  SVMFLOAT alpha_nu_sum=0;  SVMFLOAT alpha=0;  SVMINT i;  int result=1;  // actual convergence-test  total = 0; alpha_sum=0;  SVMINT total_pos = 0;  SVMINT total_neg = 0;  for(i=0;i<examples_total;i++){    alpha = all_alphas[i];    alpha_sum += alpha;    alpha_nu_sum += abs(alpha);    if((alpha>is_zero) && (alpha-Cneg < -is_zero)){      // alpha^* => nabla = lambda_eq + lambda_nu      neg_sum += nabla(i); //sum[i];      total_neg++;    }    else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){      // alpha => nabla = -lambda_eq + lambda_nu      pos_sum += nabla(i); //-sum[i];      total_pos++;    };  };  if((total_pos>0) && (total_neg > 0)){    lambda_nu = -(neg_sum/total_neg+pos_sum/total_pos)/2;    lambda_eq = -(neg_sum/total_neg-pos_sum/total_pos)/2;    if(target_count>2){      if(parameters->verbosity>=5){	cout<<"Re-estimating lambdas from WS"<<endl;      };      total_pos=0; total_neg=0;      pos_sum = 0; neg_sum = 0;      // estimate lambdas from WS      for(i=0;i<working_set_size;i++){	alpha = all_alphas[working_set[i]];	if((alpha>is_zero) && (alpha-Cneg < -is_zero)){	  // alpha^* => nabla = lambda_eq + lambda_nu	  neg_sum += nabla(working_set[i]);	  total_neg++;	  	}	else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){	  // alpha => nabla = -lambda_eq + lambda_nu	  pos_sum += nabla(working_set[i]);	  total_pos++;	};      };      if((total_pos>0) && (total_neg > 0)){	lambda_nu = -(neg_sum/total_neg+pos_sum/total_pos)/2;	lambda_eq = -(neg_sum/total_neg-pos_sum/total_pos)/2;      };      if(target_count>30){	i = working_set[target_count%working_set_size];	if(parameters->verbosity>=5){	  cout<<"Setting lambdas to nabla("<<i<<")"<<endl;	};	if(is_alpha_neg(i) > 0){	  lambda_eq = -nabla(i);	}	else{	  lambda_eq = nabla(i);	  };	lambda_nu=0;      };    };    if(parameters->verbosity>= 4){      cout<<"lambda_eq = "<<lambda_eq<<endl;      cout<<"lambda_nu = "<<lambda_nu<<endl;    };  }  else{    // lambda_eq and lambda_nu are a bit harder to find:    SVMFLOAT max1=-infinity;    SVMFLOAT max2=-infinity;    SVMFLOAT max3=-infinity;    SVMFLOAT max4=-infinity;    SVMFLOAT the_nabla;    for(i=0;i<examples_total;i++){      alpha = all_alphas[i];      the_nabla = nabla(i);      if(alpha-Cneg>=-is_zero){	if(the_nabla>max4) max4 = the_nabla;      }      else if(alpha+Cpos<=is_zero){	if(the_nabla>max3) max3 = the_nabla;      }      else if((alpha <= is_zero) && (alpha>=-is_zero)){	if(is_alpha_neg(i)){	  if(the_nabla>max1) max1 = the_nabla;	}	else{	  if(the_nabla>max2) max2 = the_nabla;	};      };    };    //    cout<<"max = ("<<max1<<", "<<max2<<", "<<max3<<", "<<max4<<endl;        if(max1==-infinity) max1=0;    if(max2==-infinity) max2=0;    if(max3==-infinity) max3=0;    if(max4==-infinity) max4=0;    lambda_eq = (max1+max3-max2-max4)/4;    lambda_nu = (max1+max2-max3-max4)/4;    //    cout<<((max1+max3)/2)<<" <= lambda_eq <= "<<(-(max2+max4)/2)<<endl;    //    cout<<((max1+max2)/2)<<" <= lambda_nu <= "<<(-(max3+max4)/2)<<endl;    if(parameters->verbosity>= 4){      cout<<"*** no SVs in convergence(), lambda_eq = "<<lambda_eq<<"."<<endl;      cout<<"                             lambda_nu = "<<lambda_nu<<"."<<endl;    };  };  // check linear constraint  if(abs(alpha_sum+sum_alpha) > convergence_epsilon){    // equality constraint violated    if(parameters->verbosity>= 3){      cout<<"alpha_sum "<<alpha_sum<<endl;      cout<<"sum_alpha "<<sum_alpha<<endl;      cout<<"No convergence: equality constraint violated: |"<<(alpha_sum+sum_alpha)<<"| >> 0"<<endl;    };    project_to_constraint();    result = 0;    };  // note: original nu is already multiplied by C in init_optimizer  if(abs(alpha_nu_sum+sum_alpha_nu-nu) > convergence_epsilon){    // equality constraint violated    if(parameters->verbosity>= 3){      cout<<"alpha_nu_sum "<<alpha_nu_sum<<endl;      cout<<"sum_alpha_nu "<<sum_alpha_nu<<endl;      cout<<"No convergence: nu-equality constraint violated: |"<<(alpha_nu_sum+sum_alpha_nu-nu)<<"| >> 0"<<endl;    };    project_to_constraint();    result = 0;    };  i=0;  while((i<examples_total) && (result != 0)){    if(lambda(i)>=-convergence_epsilon){      i++;    }    else{      result = 0;    };  };  time_convergence += get_time() - time_start;  return result;};void svm_nu_regression_c::init_working_set(){  if((((SVMFLOAT)examples_total) * nu) > parameters->realC*(((SVMFLOAT)examples_total) - ((SVMFLOAT)(examples_total%2)))){    nu = (((SVMFLOAT)examples_total) - ((SVMFLOAT)(examples_total%2))) /      ((SVMFLOAT)examples_total);    nu *= parameters->realC;    nu -= is_zero; // just to make sure    cout<<"ERROR: nu too large, setting nu = "<<nu<<endl;  };  if(examples->initialised_alpha()){    // check bounds    project_to_constraint();  };  // calculate nu-sum  sum_alpha_nu=0;  SVMFLOAT the_nu_sum = 0;  SVMFLOAT the_sum=0;  SVMINT ni;  for(ni=0;ni<examples_total;ni++){    the_sum += all_alphas[ni];    the_nu_sum += abs(all_alphas[ni]);  };  if((abs(the_sum) > is_zero) || (abs(the_nu_sum-nu) > is_zero)){    // set initial feasible point    // neg alpha: -nu/2n    // pos alpha:  nu/2p    SVMFLOAT new_nu_alpha = nu/((SVMFLOAT)(examples_total-examples_total%1));    for(ni=0;ni<examples_total/2;ni++){      examples->put_alpha(ni,new_nu_alpha);      examples->put_alpha(examples_total-1-ni,-new_nu_alpha);    };    if(examples_total%2 != 0){      examples->put_alpha(1+examples_total/2,0);    };    examples->set_initialised_alpha();  };  svm_c::init_working_set();   };void svm_nu_regression_c::shrink(){  // move shrinked examples to back  if(to_shrink>examples_total/20){    SVMINT i;    SVMINT last_pos=examples_total;    for(i=0;i<last_pos;i++){      if(at_bound[i] >= shrink_const){	// shrink i	sum_alpha += all_alphas[i];	sum_alpha_nu += is_alpha_neg(i)*all_alphas[i];	last_pos--;	examples->swap(i,last_pos);	kernel->overwrite(i,last_pos);	sum[i] = sum[last_pos];	at_bound[i] = at_bound[last_pos];      };    };        examples_total = last_pos;    kernel->set_examples_size(examples_total);        if(parameters->verbosity>=4){      cout<<"shrinked to "<<examples_total<<" variables"<<endl;    };  };};void svm_nu_regression_c::optimize(){  // optimizer-specific call  // get time  long time_start = get_time();  qp.n = working_set_size;  SVMINT i;  SVMINT j;  // equality constraint  qp.b[0] = 0;  qp.b[1] = 0;  for(i=0;i<working_set_size;i++){    qp.b[0] += all_alphas[working_set[i]];    if(qp.A[i] > 0){      qp.b[1] += all_alphas[working_set[i]];    }    else{      qp.b[1] -= all_alphas[working_set[i]];    };  };  // set initial optimization parameters  SVMFLOAT new_target=0;  SVMFLOAT old_target=0;  SVMFLOAT target_tmp;  for(i=0;i<working_set_size;i++){    target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;    for(j=0;j<i;j++){      target_tmp+=primal[j]*qp.H[j*working_set_size+i];    };    target_tmp+=qp.c[i];    old_target+=target_tmp*primal[i];  };  SVMFLOAT new_constraint_sum=0;  SVMFLOAT new_nu_constraint_sum=0;  SVMINT pos_count = 0;  SVMINT neg_count = 0;  // optimize  int KKTerror=1;  int convError=0;  if(feasible_epsilon>is_zero){    smo.set_max_allowed_error(feasible_epsilon);  };  int result = smo.smo_solve_const_sum(&qp,primal);  lambda_WS = smo.get_lambda_eq();  lambda_nu_WS = smo.get_lambda_nu();  if(parameters->verbosity>=5){    cout<<"smo ended with result "<<result<<endl;    cout<<"lambda_WS = "<<lambda_WS<<endl;    cout<<"lambda_nu_WS = "<<lambda_nu_WS<<endl;  };  // clip  new_constraint_sum=qp.b[0];  new_nu_constraint_sum=qp.b[1];  for(i=0;i<working_set_size;i++){    // check if at bound    if(primal[i] <= is_zero){      // at lower bound      primal[i] = qp.l[i];    }    else if(primal[i] - qp.u[i] >= -is_zero){      // at upper bound      primal[i] = qp.u[i];    };                                new_constraint_sum -= qp.A[i]*primal[i];    new_nu_constraint_sum -= primal[i];  };  // enforce equality constraint  pos_count=0;  neg_count=0;  for(i=0;i<working_set_size;i++){    if((primal[i] < qp.u[i]) && (primal[i] > qp.l[i])){      if(qp.A[i]>0){	pos_count++;      }      else{	neg_count++;      };    };  };  if((pos_count>0) && (neg_count>0)){    SVMFLOAT pos_add = (new_constraint_sum+new_nu_constraint_sum)/(2*pos_count);    SVMFLOAT neg_add = (new_constraint_sum-new_nu_constraint_sum)/(2*neg_count);    //    cout<<"Adding ("<<pos_add<<", "<<neg_add<<")"<<endl;    for(i=0;i<working_set_size;i++){      if((primal[i] > qp.l[i]) && 	 (primal[i] < qp.u[i])){	// real sv	if(qp.A[i]>0){	  primal[i] += pos_add;	}	else{	  primal[i] -= neg_add;	};      };    };  }  else if((abs(new_constraint_sum)   > is_zero) ||	  (abs(new_nu_constraint_sum) > is_zero)){    // error, can't get feasible point    if(parameters->verbosity >= 5){      cout<<"WARNING: No SVs, constraint_sum = "<<new_constraint_sum<<endl	  <<"              nu-constraint_sum = "<<new_nu_constraint_sum<<endl;    };    old_target = -1e20;     convError=1;  };  // test descend  new_target=0;  for(i=0;i<working_set_size;i++){    // attention: loqo changes one triangle of H!    target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;    for(j=0;j<i;j++){      target_tmp+=primal[j]*qp.H[j*working_set_size+i];    };    target_tmp+=qp.c[i];    new_target+=target_tmp*primal[i];  };

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人a视频| 久久国产尿小便嘘嘘尿| 欧美无乱码久久久免费午夜一区| 亚洲高清免费观看高清完整版在线观看| 欧美日韩成人一区二区| 国产黑丝在线一区二区三区| 国产人妖乱国产精品人妖| 欧美在线你懂的| 久久99在线观看| 国产精品久久久久影视| 日韩欧美你懂的| 97精品久久久久中文字幕| 奇米综合一区二区三区精品视频 | 国产精品一区在线| 日本一区二区三区四区在线视频| 日本韩国一区二区三区| 激情丁香综合五月| 亚洲一区二区欧美| 国产精品久久久久久福利一牛影视 | 九色综合狠狠综合久久| 国产精品嫩草影院com| 日韩欧美一级片| 色综合久久88色综合天天免费| 久久精品国产99| 午夜天堂影视香蕉久久| 亚洲欧美激情视频在线观看一区二区三区 | 久久在线观看免费| 欧美猛男男办公室激情| 欧美性受极品xxxx喷水| www.亚洲激情.com| 国产一区91精品张津瑜| 偷偷要91色婷婷| 日韩精品电影在线观看| 亚洲欧美另类图片小说| 国产精品久久毛片av大全日韩| 欧美成人vps| 久久一夜天堂av一区二区三区| 欧美疯狂做受xxxx富婆| 欧美伊人久久久久久午夜久久久久| 成人免费高清在线观看| 成人动漫一区二区三区| 粉嫩av一区二区三区粉嫩| 国模大尺度一区二区三区| 奇米在线7777在线精品| 久久99国产精品免费网站| 免费成人av资源网| 日本aⅴ精品一区二区三区 | 一区二区三区色| 国产精品久久久爽爽爽麻豆色哟哟| 久久久蜜桃精品| 久久久久久久久伊人| 精品成人佐山爱一区二区| 日韩欧美成人激情| 欧美日韩精品一区二区三区四区| 欧美一区2区视频在线观看| 欧美日韩精品一区二区三区蜜桃| 欧美午夜影院一区| 成人黄色在线网站| 91九色02白丝porn| 欧美日韩卡一卡二| 日韩一级免费观看| 欧美二区三区的天堂| 久久午夜老司机| 国产欧美精品区一区二区三区 | 一本在线高清不卡dvd| 色av综合在线| 欧美私人免费视频| 欧美亚洲动漫制服丝袜| 日韩精品影音先锋| 久久精品一区蜜桃臀影院| 亚洲国产成人在线| 国产亚洲精品免费| 亚洲一区在线观看视频| 五月天久久比比资源色| 蜜桃久久久久久| 国产91丝袜在线观看| 91美女片黄在线观看91美女| 欧美日韩一级二级三级| 这里只有精品电影| 久久精品一区二区三区不卡| 国产精品午夜免费| 偷拍亚洲欧洲综合| 韩国av一区二区三区四区 | 成人丝袜18视频在线观看| 欧美亚洲丝袜传媒另类| 日韩欧美久久一区| 国产精品热久久久久夜色精品三区 | 色av成人天堂桃色av| 91精品国产91久久久久久一区二区 | 亚洲欧美区自拍先锋| 日韩极品在线观看| 久久草av在线| 一本大道综合伊人精品热热| 色94色欧美sute亚洲13| 日韩你懂的电影在线观看| 欧美成人性福生活免费看| 亚洲男女一区二区三区| 国产成人午夜高潮毛片| 精品久久人人做人人爰| 国产寡妇亲子伦一区二区| 欧美美女网站色| 日韩成人伦理电影在线观看| 成人黄色av电影| 欧美日产国产精品| 国产人成亚洲第一网站在线播放| 亚洲一区二区五区| 久久99精品久久久久婷婷| 欧美日韩精品一区二区三区四区| 久久久久久久久久电影| 美女看a上一区| 欧美美女网站色| 亚洲午夜三级在线| 欧美综合天天夜夜久久| 亚洲人精品一区| a级精品国产片在线观看| 久久久久久电影| 久久电影国产免费久久电影 | 欧美一级爆毛片| 亚洲成人综合在线| 91久久一区二区| 亚洲日本电影在线| 国产成人av一区二区三区在线| 欧美成人一区二区三区在线观看 | 一区二区激情小说| 国产乱人伦精品一区二区在线观看| 九一久久久久久| 欧美精品一二三| 亚洲第一狼人社区| 欧美群妇大交群中文字幕| 午夜影院在线观看欧美| 欧美日韩一区高清| jlzzjlzz欧美大全| 国产精品午夜在线| 97se亚洲国产综合自在线观| 国产精品入口麻豆原神| 99久久精品情趣| 一区二区免费在线播放| 欧美三级三级三级| 日韩va欧美va亚洲va久久| 欧美一二区视频| 激情六月婷婷久久| 国产精品色在线观看| 99久久精品费精品国产一区二区| 国产精品不卡一区二区三区| 91性感美女视频| 亚洲国产婷婷综合在线精品| 欧美男生操女生| 久久99精品久久久久久| 久久精品一二三| 色视频欧美一区二区三区| 亚洲影院免费观看| 日韩视频在线一区二区| 国产一区二区三区在线观看免费| 欧美激情一区二区三区四区 | 国产精一区二区三区| 日本一区二区三级电影在线观看| 99久久精品免费精品国产| 亚洲国产视频在线| 精品国产免费久久| 一本一本大道香蕉久在线精品 | 日韩精品资源二区在线| 国产福利不卡视频| 亚洲免费观看高清在线观看| 91精品国产综合久久福利| 国产宾馆实践打屁股91| 亚洲一区二区三区自拍| 精品久久久久久久一区二区蜜臀| 不卡大黄网站免费看| 日韩电影在线免费观看| 日本一区二区成人| 欧美日韩国产中文| 懂色一区二区三区免费观看| 亚洲午夜三级在线| 国产清纯白嫩初高生在线观看91 | 亚洲第一精品在线| 2019国产精品| 在线观看视频欧美| 国产一区二区三区精品视频| 一区二区视频在线看| 日韩欧美的一区| 色视频成人在线观看免| 精品一区二区三区av| 怡红院av一区二区三区| 久久影院午夜片一区| 欧美视频一区二区三区在线观看 | 欧美日韩国产一级片| 高清不卡一二三区| 亚洲动漫第一页| 欧美在线观看一二区| 欧美一区二区精品在线| 香蕉久久夜色精品国产使用方法| 成人午夜视频在线观看| 国产目拍亚洲精品99久久精品| 国产剧情一区二区三区| 国产精品免费aⅴ片在线观看| 精品国产区一区| 欧美少妇一区二区| 91影院在线观看| 国产激情91久久精品导航 | 3d动漫精品啪啪1区2区免费|