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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smo.cpp

?? 求解SVM問題的一種高效算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* mysmo.h: interface for the mysmo class.*/

/*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <time.h>
#include <math.h>

	int	  m_end_support_i; /* Support vectors are from 0...end_support_i */
	float m_C=1000; /* Penalty factor (HIGH->high penalty for wrong side) */
	float m_tolerance=0.001f; /* Tolerance in KKT condition */
	float m_eps=0.001f; /* Break limit */
	float m_b; /* Threshold (begin at 0) */
	float * m_x; /* The training points	*/
	float * m_y; /* Classification of training points */
	float * m_a; /*agrange multipliers (LM) */
	float * m_w; /* Weight vector */
	float * m_self_dot_product; /* vector of dot prod x*x for all x */
	float * m_e; /* vector of prediction error Ei */
	float   m_sigma;
	float	m_two_sigma_squared;
	float * m_testIns; /* The training points */
	float * m_errInsIndex;/* testing err instance's index */
	float * m_max;
	float * m_min;	
	float precision;
	unsigned int m_testNum;	/* number of testing points */
	unsigned int m_dimension; /* dimension of points */	
	unsigned int m_xNum; /* Number of training points */

	int		indicator_function(float *v);/* Returns 1 or -1 as class. for v */
	float	decision_function(float * v);/* Calculates the decision func. at v */
	int		testing(char * fileName,unsigned int number);
	int		LMToFile(char * fileName);
	int		pointToFile(char * FileName,float * instance ,float * y,unsigned int number);
	int		skipToFile(char * FileName,float * x ,float * y,unsigned int number);
	int		skip(char * FileName,unsigned int number,unsigned int dimession);
	unsigned char	getFileName(char * dest,const char * source);
	int		readPoint(char * FileName,unsigned int number,unsigned int dimession);
	void	initCsmo();
	int		allocMemory(unsigned int number,unsigned int dimession);
	float	drand48();
	float	dot_product(int i1, int i2);/* Dot product x*y */
	float	kernel(int i1, int i2);/* The kernel function */
	float	learned_func(int k);/* The learned function w*x - b= sum(ai*yi*ki) -b */
	void	RenormalizeData(float * instance,unsigned int number);
	int		optimize( int i1, int i2 );
	int		tryLM(int i1);
	int		createSmo();
	int		scaleToFile(char * FileName,float * x ,float * y,unsigned int number);
	int		scale(char * FileName,unsigned int number,unsigned int dimession);
	void	freeCsmo();


void initCsmo()
{
	m_a=NULL; /* Lagrange multipliers (LM) */
	m_w=NULL; /* Weight vector */
	m_y=NULL; /* Classification of training points */
	m_self_dot_product=NULL; /* vector of dot prod x*x for all x */
	m_e=NULL; /* vector of prediction error Ei */
	m_x=NULL; /* The training points */
	m_testIns=NULL; /* The training points */
	m_errInsIndex=NULL;/* testing err instance's index */
	m_max=NULL;
	m_min = NULL;
	m_xNum=0; /* Number of training points */
	m_testNum=0;	/* number of testing points */
	m_dimension=0; /* dimension of points */
	m_end_support_i=0; /* Support vectors are from 0...end_support_i	*/
	
	m_b = 0; /* Threshold (begin at 0) */
	m_two_sigma_squared = 2 * m_sigma * m_sigma;
}

int allocMemory(unsigned int number,unsigned int dimession)
{
	m_x = (float*)malloc(sizeof(float)*number * dimession);
	m_y = (float*)malloc(sizeof(float)*number);
	m_a = (float*)malloc(sizeof(float)*number); /* Lagrange multipliers (LM) */
	memset(m_a,0,number*sizeof(float));
	m_e  = (float*)malloc(sizeof(float)*number); /* vector of prediction error Ei */
	memset(m_e,0,number*sizeof(float));
	m_self_dot_product = (float*)malloc(sizeof(float)*number); /* vector of dot prod x*x for all x */
	m_max = (float*)malloc(sizeof(float)*dimession);
	m_min = (float*)malloc(sizeof(float)*dimession);
	return 0;
}

void freeCsmo()
{
	if(m_a) free(m_a);
	if(m_w) free(m_w);
	if(m_y) free( m_y);
	if(m_self_dot_product) free(m_self_dot_product);
	if(m_e) free(m_e);
	if(m_x) free(m_x);
	if(m_testIns) free(m_testIns);
	if(m_errInsIndex) free(m_errInsIndex);
	if(m_max) free(m_max);
	if(m_min) free(m_min);
}

float drand48()
{
	return rand()/(float)RAND_MAX;
}

float dot_product(int i1, int i2)
{
/* 	Dot product x*y */
	unsigned int i;
	float dot = 0.;
	float *p1 = m_x + i1*m_dimension;
	float *p2 = m_x + i2*m_dimension;
	for(i = 0; i < m_dimension; i++)
		dot += p1[i] * p2[i];
	return dot;
}
float kernel(int i1, int i2)/* The kernel function */
{
	float s = dot_product(i1, i2); /* Dot product x*y */
	s *= -2;
	s += m_self_dot_product[i1] + m_self_dot_product[i2];
	return exp( -s / m_two_sigma_squared ); /* Gaussian RBF */
}
float learned_func(int k)/* The learned function w*x - b= sum(ai*yi*ki) -b */
{
	int i;
	float s = 0.;
	for(i = 0; i < m_end_support_i; i++)
	{
		if(m_a[i] > 0) s += m_a[i] * m_y[i] * kernel(i,k);
	}
	s -= m_b;
	return s;
}

int	optimize( int i1, int i2 )
{
	int i;
	float y1, y2, s;
	float a1o, a2o; /* old LM values */
	float a1n, a2n; /* new LM values */
	float E1, E2, L, H, eta;
	float k11,k12,k22;
	float diff;
	float c1,c2;
	float Lobj,Hobj;
	float t1,t2;
	/* Update threshold b to reflect change in a */
	float b1, b2, bnew, deltab;
	/* Assignment of values */
	if(i1 == i2) return 0;
	a1o = m_a[i1];
	a2o = m_a[i2];
	y1 = m_y[i1];
	y2 = m_y[i2];
	if(a1o > 0 && a1o < m_C) E1 = m_e[i1];
	else E1 = learned_func(i1) - y1;
	if((a2o > 0) && (a2o < m_C)) E2 = m_e[i2];
	else E2 = learned_func(i2) - y2;
	s = y1 * y2;
	/* Computation of L and H, low and high end a2n on line segment */
	if( y1 == y2 ) {
		float sum = a1o + a2o;
		if(sum > m_C){
			L = sum - m_C;
			H = m_C;
		}
		else{
			L = 0;
			H = sum;
		}
	}
	else{
		diff = a1o - a2o;
		if(diff > 0){
			L = 0;
			H = m_C - diff;
		}
		else{
			L = -diff;
			H = m_C;
		}
	}
	if(L == H) return 0; /* Error, no line segment */
	/* Computation of eta */
	k11 = kernel(i1,i1);
	k22 = kernel(i2,i2);
	k12 = kernel(i1,i2);
	eta = 2 * k12 - k11 - k22; /* Computation of eta from kernel */
	if(eta < -0.01){
		a2n = a2o + y2 * (E2 - E1) / eta; /* New a2 on line segment */
		if( a2n < L ) a2n = L; /* Lowest a2n on line segment */
		else if( a2n > H ) a2n = H; /* Highest a2n on line segment */
	}
	else
	{ /* eta~0 */
		c1 = eta/2;
		c2 = y2 * (E1-E2) - eta * a2o;
		Lobj = c1 * L * L + c2 * L;
		Hobj = c1 * H * H + c2 * H;
		if( Lobj > Hobj + m_eps ) a2n = L;
		else if( Lobj < Hobj - m_eps ) a2n = H;
		else a2n = a2o;
	}
	if( fabs(a2n - a2o) < (m_eps * (a2n + a2o + m_eps)) )
		return 0;
	a1n = a1o - s * (a2n - a2o); /* New a1 */
	if(a1n < 0)
	{ /* Disallowed case */
		a2n += s * a1n;
		a1n = 0; /* Limit case */
	}
	else if(a1n > m_C)
	{ /* Disallowed case */
		a2n += s * (a1n - m_C);
		a1n = m_C; /* Limit case */
	}

	
	if((a1n > 0) && (a1n < m_C))
	{
		bnew = m_b + E1 + y1 * (a1n - a1o) * k11 + y2 * (a2n - a2o) * k12;
	}
	else
	{
		if((a2n > 0) && (a2n < m_C))
		{
			bnew = m_b + E2 + y1 * (a1n - a1o) * k12 + y2 * (a2n - a2o) * k22;
		}
		else
		{
			b1 = m_b + E1 + y1 * (a1n - a1o) * k11 + y2 * (a2n - a2o) * k12;
			b2 = m_b + E2 + y1 * (a1n - a1o) * k12 + y2 * (a2n - a2o) * k22;
			bnew = (b1 + b2) / 2;
		}
	}
	deltab = bnew - m_b;
	m_b = bnew;
	/* Update e vector */
	t1 = y1 * (a1n - a1o);
	t2 = y2 * (a2n - a2o);
	for(i = 0; i < m_end_support_i; i++)
	{
		if((0 < m_a[i]) && (m_a[i] < m_C))
		{
			m_e[i] += t1 * kernel(i1,i) + t2 * kernel(i2,i) - deltab;
		}
	}
	m_e[i1] = 0.0;
	m_e[i2] = 0.0;
	m_a[i1] = a1n; /*Store the optimized pair of LMs */
	m_a[i2] = a2n;
	return 1; /*Success! */
}

int	tryLM(int i1)
{
	
	int k,k0,i2; 
	float E1,E2,y1,a1,r1,tmax,temp; /*Functional values */
	y1 = m_y[i1]; /*Classification of point i1 */
	a1 = m_a[i1]; /*LM of point i1 */
	if( (a1 > 0) && (a1 < m_C) )
	{ /*should mean r1=0 from KKT condition */
		E1 = m_e[i1];
	}
	else
	{
		E1 = learned_func(i1) - y1; /*Calculation of prediction error */
	}
	r1 = y1 * E1; /*r1 quantity of KKT condition */
	if(((r1 < -m_tolerance) && (a1 < m_C)) || ((r1 > m_tolerance) && (a1 > 0)))
	{ /*If KKT is violated */
		/*Try to find suitable example LM (index i2) */
		/*Try boundary points with the largest difference |E1 - E2| */
		for( i2 = (-1), tmax = 0, k = 0; k < m_end_support_i; k++)
		{
			if((m_a[k] > 0) && (m_a[k] < m_C))
			{ /*boundary points */
				E2 = m_e[k];
				temp = fabs(E1 - E2);
				if(temp > tmax){
					tmax = temp;
					i2 = k;
				}
			}			
		}
		if(i2 >= 0)
		{
			if(optimize( i1, i2 ) == 1) return 1;
		}
		/*Try all boundary points */
		for(k0 = (int)(drand48() * m_end_support_i), k = k0; k < m_end_support_i + k0; k++)
		{
			i2 = k % m_end_support_i;
			if((m_a[i2] > 0) && (m_a[i2] < m_C))
			{
				if(optimize(i1,i2) == 1) return 1;
			}
		}
		/*Try the entire set */
		for(k0 = (int)(drand48() * m_end_support_i), k = k0; k < m_end_support_i + k0; k++){
			i2 = k % m_end_support_i;
			if(optimize(i1,i2) == 1) return 1;
		}
	}
	return 0;
}

float decision_function(float * v)/*Calculates the decision func. at v */
{
	unsigned int i,j;
	float dec = 0;
	float s = 0; /*v - x[i] */
	float *p = m_x;
	float temp;
	for(i = 0; i < m_xNum; i++)
	{
		if(m_a[i]>0)
		{
			s = 0;
			for(j = 0; j < m_dimension; j++)
			{
				temp = v[j] - p[j];
				s = s + temp * temp;
			}
			dec += m_y[i] * m_a[i] * exp( - s / m_two_sigma_squared );
		}
			p = p + m_dimension;
	}
	dec -= m_b;
	return dec;
}

int	indicator_function(float *v)/*Returns 1 or -1 as class. for v */
{
	float dec = decision_function(v);
	if(dec > 0)
		return 1;
	else
		return -1;
}

unsigned char getFileName(char * dest,const char * source)
{
	unsigned int i,j;
	if(source==NULL)
		return 1;
	j = strlen(source) -1;
	if(j==0)
		return 1;
	for(i=j; i>0; i--)
	{
		if(source[i]=='.')
			j = i;
		else if(source[i]=='\\')
		{
			i++;
			break;
		}
	}
	strncpy(dest,source+i,j-i);
	dest[j-i]='\0';
	return 0;
}

int	testing(char * fileName,unsigned int number)
{
	unsigned int right=0,wrong=0;	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网址在线观看| 色婷婷一区二区三区四区| 国产欧美精品一区二区色综合朱莉 | 一本大道久久精品懂色aⅴ| 日本成人中文字幕| 亚洲一线二线三线久久久| 国产日韩欧美一区二区三区乱码 | 精品999久久久| 欧洲精品一区二区| 成人激情午夜影院| 麻豆精品在线播放| 亚洲成人综合视频| 亚洲黄色性网站| 中文字幕一区二区三区av| 欧美va亚洲va| 制服丝袜日韩国产| 欧美视频在线观看一区二区| 成人成人成人在线视频| 韩国成人福利片在线播放| 日韩中文字幕不卡| 天天操天天综合网| 亚洲一二三四久久| 亚洲免费观看视频| 1区2区3区国产精品| 日本一区二区三区四区 | 欧美一卡2卡3卡4卡| 欧美日韩综合在线免费观看| 91猫先生在线| 99国产麻豆精品| 在线观看中文字幕不卡| av男人天堂一区| 成人免费视频免费观看| 国产91丝袜在线播放| 国产精品99久久久| 丁香一区二区三区| 国产98色在线|日韩| 国产精品一区二区男女羞羞无遮挡| 日本va欧美va欧美va精品| 偷偷要91色婷婷| 爽好多水快深点欧美视频| 亚洲成人精品在线观看| 日韩制服丝袜av| 秋霞电影网一区二区| 免费在线观看精品| 久久99久久精品| 国内不卡的二区三区中文字幕| 极品少妇一区二区| 国产一区二区福利| 成人av电影免费在线播放| 99久久精品免费看国产免费软件| 91蜜桃免费观看视频| 91久久精品日日躁夜夜躁欧美| 欧美在线你懂得| 在线91免费看| 精品蜜桃在线看| 国产精品日韩精品欧美在线| **网站欧美大片在线观看| 一区二区三区电影在线播| 午夜精品国产更新| 韩国av一区二区三区| 夫妻av一区二区| 色激情天天射综合网| 欧美精品在欧美一区二区少妇| 欧美一卡二卡在线| 国产精品伦理在线| 亚洲午夜精品17c| 麻豆精品一区二区综合av| 成人涩涩免费视频| 欧美日韩高清在线| 精品国产免费一区二区三区四区 | 国产精品色呦呦| 亚洲精品videosex极品| 青青草伊人久久| 福利电影一区二区| 欧美浪妇xxxx高跟鞋交| 久久色视频免费观看| 亚洲裸体xxx| 久久超碰97中文字幕| 成人18视频在线播放| 91精品国产色综合久久不卡蜜臀| 国产午夜久久久久| 午夜伦理一区二区| 国产精品18久久久久久久久| 在线观看日韩av先锋影音电影院| 欧美大度的电影原声| 一区二区三区在线观看欧美| 久久99国产精品免费| 欧美性猛片aaaaaaa做受| 久久久久久久久久久久久女国产乱| 亚洲一区电影777| 风流少妇一区二区| 欧美xxxxx牲另类人与| 亚洲综合激情另类小说区| 国产自产高清不卡| 欧美日韩一区二区在线视频| 国产亚洲精品超碰| 高清国产一区二区三区| 91精品国产91热久久久做人人| 亚洲手机成人高清视频| 久久99久久99精品免视看婷婷| 在线观看日韩高清av| 国产精品久久久久影院| 美女网站色91| 4438x成人网最大色成网站| 亚洲三级小视频| 成熟亚洲日本毛茸茸凸凹| 欧美大尺度电影在线| 亚洲成年人影院| 欧美午夜电影网| 亚洲视频你懂的| 国产不卡免费视频| 精品福利一区二区三区| 午夜精品久久久久久| 欧美无乱码久久久免费午夜一区| 国产精品入口麻豆原神| 国产高清精品久久久久| 精品久久人人做人人爰| 蜜臀精品久久久久久蜜臀| 欧美午夜一区二区三区| 亚洲精品国产a| 色视频欧美一区二区三区| 1000精品久久久久久久久| 成人a区在线观看| 国产精品免费视频一区| 成人午夜激情视频| 欧美国产欧美综合| 成人一区二区三区视频在线观看| 久久婷婷国产综合精品青草 | 奇米色777欧美一区二区| 欧美三级视频在线| 亚洲狠狠爱一区二区三区| 欧美在线视频你懂得| 亚洲成av人片在线观看无码| 在线观看欧美黄色| 亚洲成人激情自拍| 欧美日本一道本| 免费观看久久久4p| 欧美成人在线直播| 国产精品99久久久久| 欧美高清在线一区二区| av男人天堂一区| 亚洲综合自拍偷拍| 欧美人伦禁忌dvd放荡欲情| 亚洲1区2区3区4区| 欧美一级夜夜爽| 国产真实乱子伦精品视频| 久久精品人人做人人爽97| 成人午夜看片网址| 亚洲综合精品自拍| 欧美一区二区日韩| 高清不卡一区二区在线| 国产精品国产三级国产普通话三级 | 国产在线视频一区二区三区| 久久先锋资源网| 不卡视频一二三四| 亚洲精品免费在线| 欧美一区二视频| 国产一区二区精品久久99| 国产精品久久久久影视| 在线精品视频一区二区三四| 日本va欧美va瓶| 欧美国产成人精品| 欧美亚洲另类激情小说| 男人操女人的视频在线观看欧美| 欧美精品一区二区久久婷婷| 成人免费高清视频在线观看| 一区二区三区中文字幕电影 | 国产91综合一区在线观看| 国产精品国产三级国产aⅴ入口| 欧美午夜在线一二页| 欧美日韩aaaaa| 免费在线看成人av| 中文字幕乱码亚洲精品一区| 欧美伊人久久大香线蕉综合69| 久久99这里只有精品| 国产精品美女久久久久久| 欧美日韩一区成人| 国产成人午夜精品5599| 亚洲综合一二区| www久久精品| 91黄色激情网站| 国产麻豆精品视频| 一区二区三区av电影| 精品成人私密视频| 欧洲亚洲国产日韩| 国产乱人伦偷精品视频不卡 | 一区二区三区四区激情| 欧美成va人片在线观看| 色综合天天综合网国产成人综合天| 欧美a级理论片| 一区二区三区在线观看动漫| 亚洲精品一区二区三区99| 欧美色偷偷大香| 北条麻妃国产九九精品视频| 男女激情视频一区| 亚洲午夜私人影院| 日韩一区在线播放| 精品国产sm最大网站免费看| 欧美亚洲国产一区在线观看网站| 国产成人av在线影院|