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

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

?? svm.java

?? 馬克斯普朗克提供的機器學習程序包
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
package libsvm;import java.io.*;import java.util.*;//// Kernel Cache//// l is the number of total data items// size is the cache size limit in bytes//class Cache {	private final int l;	private int size;	private final class head_t	{		head_t prev, next;	// a cicular list		float[] data;		int len;		// data[0,len) is cached in this entry	}	private final head_t[] head;	private head_t lru_head;	Cache(int l_, int size_)	{		l = l_;		size = size_;		head = new head_t[l];		for(int i=0;i<l;i++) head[i] = new head_t();		size /= 4;		size -= l * (16/4);	// sizeof(head_t) == 16		size = Math.max(size, 2*l);  // cache must be large enough for two columns		lru_head = new head_t();		lru_head.next = lru_head.prev = lru_head;	}	private void lru_delete(head_t h)	{		// delete from current location		h.prev.next = h.next;		h.next.prev = h.prev;	}	private void lru_insert(head_t h)	{		// insert to last position		h.next = lru_head;		h.prev = lru_head.prev;		h.prev.next = h;		h.next.prev = h;	}	// request data [0,len)	// return some position p where [p,len) need to be filled	// (p >= len if nothing needs to be filled)	// java: simulate pointer using single-element array	int get_data(int index, float[][] data, int len)	{		head_t h = head[index];		if(h.len > 0) lru_delete(h);		int more = len - h.len;		if(more > 0)		{			// free old space			while(size < more)			{				head_t old = lru_head.next;				lru_delete(old);				size += old.len;				old.data = null;				old.len = 0;			}			// allocate new space			float[] new_data = new float[len];			if(h.data != null) System.arraycopy(h.data,0,new_data,0,h.len);			h.data = new_data;			size -= more;			do {int _=h.len; h.len=len; len=_;} while(false);		}		lru_insert(h);		data[0] = h.data;		return len;	}	void swap_index(int i, int j)	{		if(i==j) return;				if(head[i].len > 0) lru_delete(head[i]);		if(head[j].len > 0) lru_delete(head[j]);		do {float[] _=head[i].data; head[i].data=head[j].data; head[j].data=_;} while(false);		do {int _=head[i].len; head[i].len=head[j].len; head[j].len=_;} while(false);		if(head[i].len > 0) lru_insert(head[i]);		if(head[j].len > 0) lru_insert(head[j]);		if(i>j) do {int _=i; i=j; j=_;} while(false);		for(head_t h = lru_head.next; h!=lru_head; h=h.next)		{			if(h.len > i)			{				if(h.len > j)					do {float _=h.data[i]; h.data[i]=h.data[j]; h.data[j]=_;} while(false);				else				{					// give up					lru_delete(h);					size += h.len;					h.data = null;					h.len = 0;				}			}		}	}}//// Kernel evaluation//// the static method k_function is for doing single kernel evaluation// the constructor of Kernel prepares to calculate the l*l kernel matrix// the member function get_Q is for getting one column from the Q Matrix//abstract class QMatrix {	abstract float[] get_Q(int column, int len);	abstract float[] get_QD();	abstract void swap_index(int i, int j);};abstract class Kernel extends QMatrix {	private svm_node[][] x;	private final double[] x_square;	// svm_parameter	private final int kernel_type;	private final double degree;	private final double gamma;	private final double coef0;	abstract float[] get_Q(int column, int len);	abstract float[] get_QD();	void swap_index(int i, int j)	{		do {svm_node[] _=x[i]; x[i]=x[j]; x[j]=_;} while(false);		if(x_square != null) do {double _=x_square[i]; x_square[i]=x_square[j]; x_square[j]=_;} while(false);	}	private static double tanh(double x)	{		double e = Math.exp(x);		return 1.0-2.0/(e*e+1);	}	double kernel_function(int i, int j)	{		switch(kernel_type)		{			case svm_parameter.LINEAR:				return dot(x[i],x[j]);			case svm_parameter.POLY:				return Math.pow(gamma*dot(x[i],x[j])+coef0,degree);			case svm_parameter.RBF:				return Math.exp(-gamma*(x_square[i]+x_square[j]-2*dot(x[i],x[j])));			case svm_parameter.SIGMOID:				return tanh(gamma*dot(x[i],x[j])+coef0);			default:				return 0;	// java		}	}	Kernel(int l, svm_node[][] x_, svm_parameter param)	{		this.kernel_type = param.kernel_type;		this.degree = param.degree;		this.gamma = param.gamma;		this.coef0 = param.coef0;		x = (svm_node[][])x_.clone();		if(kernel_type == svm_parameter.RBF)		{			x_square = new double[l];			for(int i=0;i<l;i++)				x_square[i] = dot(x[i],x[i]);		}		else x_square = null;	}	static double dot(svm_node[] x, svm_node[] y)	{		double sum = 0;		int xlen = x.length;		int ylen = y.length;		int i = 0;		int j = 0;		while(i < xlen && j < ylen)		{			if(x[i].index == y[j].index)				sum += x[i++].value * y[j++].value;			else			{				if(x[i].index > y[j].index)					++j;				else					++i;			}		}		return sum;	}	static double k_function(svm_node[] x, svm_node[] y,					svm_parameter param)	{		switch(param.kernel_type)		{			case svm_parameter.LINEAR:				return dot(x,y);			case svm_parameter.POLY:				return Math.pow(param.gamma*dot(x,y)+param.coef0,param.degree);			case svm_parameter.RBF:			{				double sum = 0;				int xlen = x.length;				int ylen = y.length;				int i = 0;				int j = 0;				while(i < xlen && j < ylen)				{					if(x[i].index == y[j].index)					{						double d = x[i++].value - y[j++].value;						sum += d*d;					}					else if(x[i].index > y[j].index)					{						sum += y[j].value * y[j].value;						++j;					}					else					{						sum += x[i].value * x[i].value;						++i;					}				}				while(i < xlen)				{					sum += x[i].value * x[i].value;					++i;				}				while(j < ylen)				{					sum += y[j].value * y[j].value;					++j;				}				return Math.exp(-param.gamma*sum);			}			case svm_parameter.SIGMOID:				return tanh(param.gamma*dot(x,y)+param.coef0);			default:				return 0;	// java		}	}}// Generalized SMO+SVMlight algorithm// Solves:////	min 0.5(\alpha^T Q \alpha) + b^T \alpha////		y^T \alpha = \delta//		y_i = +1 or -1//		0 <= alpha_i <= Cp for y_i = 1//		0 <= alpha_i <= Cn for y_i = -1//// Given:////	Q, b, y, Cp, Cn, and an initial feasible point \alpha//	l is the size of vectors and matrices//	eps is the stopping criterion//// solution will be put in \alpha, objective value will be put in obj//class Solver {	int active_size;	byte[] y;	double[] G;		// gradient of objective function	static final byte LOWER_BOUND = 0;	static final byte UPPER_BOUND = 1;	static final byte FREE = 2;	byte[] alpha_status;	// LOWER_BOUND, UPPER_BOUND, FREE	double[] alpha;	QMatrix Q;	float[] QD;	double eps;	double Cp,Cn;	double[] b;	int[] active_set;	double[] G_bar;		// gradient, if we treat free variables as 0	int l;	boolean unshrinked;	// XXX		static final double INF = java.lang.Double.POSITIVE_INFINITY;	double get_C(int i)	{		return (y[i] > 0)? Cp : Cn;	}	void update_alpha_status(int i)	{		if(alpha[i] >= get_C(i))			alpha_status[i] = UPPER_BOUND;		else if(alpha[i] <= 0)			alpha_status[i] = LOWER_BOUND;		else alpha_status[i] = FREE;	}	boolean is_upper_bound(int i) { return alpha_status[i] == UPPER_BOUND; }	boolean is_lower_bound(int i) { return alpha_status[i] == LOWER_BOUND; }	boolean is_free(int i) {  return alpha_status[i] == FREE; }	// java: information about solution except alpha,	// because we cannot return multiple values otherwise...	static class SolutionInfo {		double obj;		double rho;		double upper_bound_p;		double upper_bound_n;		double r;	// for Solver_NU	}	void swap_index(int i, int j)	{		Q.swap_index(i,j);		do {byte _=y[i]; y[i]=y[j]; y[j]=_;} while(false);		do {double _=G[i]; G[i]=G[j]; G[j]=_;} while(false);		do {byte _=alpha_status[i]; alpha_status[i]=alpha_status[j]; alpha_status[j]=_;} while(false);		do {double _=alpha[i]; alpha[i]=alpha[j]; alpha[j]=_;} while(false);		do {double _=b[i]; b[i]=b[j]; b[j]=_;} while(false);		do {int _=active_set[i]; active_set[i]=active_set[j]; active_set[j]=_;} while(false);		do {double _=G_bar[i]; G_bar[i]=G_bar[j]; G_bar[j]=_;} while(false);	}	void reconstruct_gradient()	{		// reconstruct inactive elements of G from G_bar and free variables		if(active_size == l) return;		int i;		for(i=active_size;i<l;i++)			G[i] = G_bar[i] + b[i];		for(i=0;i<active_size;i++)			if(is_free(i))			{				float[] Q_i = Q.get_Q(i,l);				double alpha_i = alpha[i];				for(int j=active_size;j<l;j++)					G[j] += alpha_i * Q_i[j];			}	}	void Solve(int l, QMatrix Q, double[] b_, byte[] y_,		   double[] alpha_, double Cp, double Cn, double eps, SolutionInfo si, int shrinking)	{		this.l = l;		this.Q = Q;		QD = Q.get_QD();		b = (double[])b_.clone();		y = (byte[])y_.clone();		alpha = (double[])alpha_.clone();		this.Cp = Cp;		this.Cn = Cn;		this.eps = eps;		this.unshrinked = false;		// initialize alpha_status		{			alpha_status = new byte[l];			for(int i=0;i<l;i++)				update_alpha_status(i);		}		// initialize active set (for shrinking)		{			active_set = new int[l];			for(int i=0;i<l;i++)				active_set[i] = i;			active_size = l;		}		// initialize gradient		{			G = new double[l];			G_bar = new double[l];			int i;			for(i=0;i<l;i++)			{				G[i] = b[i];				G_bar[i] = 0;			}			for(i=0;i<l;i++)				if(!is_lower_bound(i))				{					float[] Q_i = Q.get_Q(i,l);					double alpha_i = alpha[i];					int j;					for(j=0;j<l;j++)						G[j] += alpha_i*Q_i[j];					if(is_upper_bound(i))						for(j=0;j<l;j++)							G_bar[j] += get_C(i) * Q_i[j];				}		}		// optimization step		int iter = 0;		int counter = Math.min(l,1000)+1;		int[] working_set = new int[2];		while(true)		{			// show progress and do shrinking			if(--counter == 0)			{				counter = Math.min(l,1000);				if(shrinking!=0) do_shrinking();				System.err.print(".");			}			if(select_working_set(working_set)!=0)			{				// reconstruct the whole gradient				reconstruct_gradient();				// reset active set size and check				active_size = l;				System.err.print("*");				if(select_working_set(working_set)!=0)					break;				else					counter = 1;	// do shrinking next iteration			}						int i = working_set[0];			int j = working_set[1];			++iter;			// update alpha[i] and alpha[j], handle bounds carefully			float[] Q_i = Q.get_Q(i,active_size);			float[] Q_j = Q.get_Q(j,active_size);			double C_i = get_C(i);			double C_j = get_C(j);			double old_alpha_i = alpha[i];			double old_alpha_j = alpha[j];			if(y[i]!=y[j])			{				double quad_coef = Q_i[i]+Q_j[j]+2*Q_i[j];				if (quad_coef <= 0)					quad_coef = 1e-12;				double delta = (-G[i]-G[j])/quad_coef;				double diff = alpha[i] - alpha[j];				alpha[i] += delta;				alpha[j] += delta;							if(diff > 0)				{					if(alpha[j] < 0)					{						alpha[j] = 0;						alpha[i] = diff;					}				}				else				{					if(alpha[i] < 0)					{						alpha[i] = 0;						alpha[j] = -diff;					}				}				if(diff > C_i - C_j)				{					if(alpha[i] > C_i)					{						alpha[i] = C_i;						alpha[j] = C_i - diff;					}				}				else				{					if(alpha[j] > C_j)					{						alpha[j] = C_j;						alpha[i] = C_j + diff;					}				}			}			else			{				double quad_coef = Q_i[i]+Q_j[j]-2*Q_i[j];				if (quad_coef <= 0)					quad_coef = 1e-12;				double delta = (G[i]-G[j])/quad_coef;				double sum = alpha[i] + alpha[j];				alpha[i] -= delta;				alpha[j] += delta;				if(sum > C_i)				{					if(alpha[i] > C_i)					{						alpha[i] = C_i;						alpha[j] = sum - C_i;					}				}				else				{					if(alpha[j] < 0)					{						alpha[j] = 0;						alpha[i] = sum;					}				}				if(sum > C_j)				{					if(alpha[j] > C_j)					{						alpha[j] = C_j;						alpha[i] = sum - C_j;					}				}				else				{					if(alpha[i] < 0)					{						alpha[i] = 0;						alpha[j] = sum;					}				}			}			// update G

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡一区视频| 日韩欧美激情一区| 亚洲精选在线视频| 欧美顶级少妇做爰| 67194成人在线观看| 欧美亚洲动漫精品| 欧美午夜一区二区三区| 91一区二区三区在线播放| 99国产精品久久久久久久久久久| 国产一区91精品张津瑜| 国产精品99久久久久久久女警| 日韩国产一二三区| 99视频精品在线| 国产很黄免费观看久久| 国产成人av一区二区三区在线| 成人av电影在线观看| 日本丶国产丶欧美色综合| 欧美日韩1区2区| 2021国产精品久久精品| 亚洲欧洲另类国产综合| 亚洲人成亚洲人成在线观看图片| 亚洲精品久久7777| 九九**精品视频免费播放| 国产综合色精品一区二区三区| 成人网页在线观看| 欧美男生操女生| 中文字幕日韩欧美一区二区三区| 亚洲黄色av一区| 国产一区中文字幕| 在线亚洲精品福利网址导航| 欧美一区二区三区在线视频| 国产三级一区二区| 美女视频免费一区| 黄网站免费久久| 日本久久电影网| 国产日韩av一区二区| 丝袜国产日韩另类美女| 国产成人免费视频一区| 91精品国产综合久久久久久 | 日韩综合一区二区| 日本中文一区二区三区| 99国产一区二区三精品乱码| 精品动漫一区二区三区在线观看| 中文字幕成人网| 精品一区免费av| 欧美丰满美乳xxx高潮www| 一区二区三区不卡在线观看| 不卡视频一二三| 国产精品久久久久四虎| 国产aⅴ精品一区二区三区色成熟| 色婷婷亚洲综合| 一区二区三区精品视频| 成人亚洲一区二区一| 精品国产乱码久久久久久老虎 | 麻豆成人久久精品二区三区小说| 色狠狠一区二区三区香蕉| 最近日韩中文字幕| 色综合久久久久网| 亚洲人成亚洲人成在线观看图片| 丝袜诱惑亚洲看片| www.日韩av| 亚洲视频综合在线| 91免费观看视频| 亚洲成人一区在线| 日韩亚洲欧美综合| 久久国产夜色精品鲁鲁99| 国产精品一区二区黑丝| 波多野结衣在线一区| 久久综合九色欧美综合狠狠 | 蜜桃精品视频在线观看| 色妹子一区二区| 舔着乳尖日韩一区| 国产午夜亚洲精品理论片色戒| 成人网男人的天堂| 香蕉成人啪国产精品视频综合网| 麻豆久久久久久久| 亚洲国产精品成人综合色在线婷婷 | 亚洲免费av高清| 久久久不卡网国产精品一区| 91热门视频在线观看| 琪琪久久久久日韩精品| 中文字幕一区二区5566日韩| 欧美精品 日韩| 色狠狠一区二区三区香蕉| 国产激情91久久精品导航| 日韩专区欧美专区| 亚洲综合久久久| 综合久久国产九一剧情麻豆| www久久精品| 日韩一区二区中文字幕| 欧美系列日韩一区| 一本色道久久综合狠狠躁的推荐| 成人免费看视频| 国产91丝袜在线播放九色| 国产伦精一区二区三区| 国内外成人在线| 国产精品一色哟哟哟| 免费成人在线网站| 久久99久久99精品免视看婷婷| 日韩中文字幕麻豆| 麻豆精品新av中文字幕| 裸体歌舞表演一区二区| 奇米综合一区二区三区精品视频 | 国产91精品露脸国语对白| 国产精品一区免费在线观看| 国产精品一区二区久久不卡| 99精品视频一区二区| 成人精品电影在线观看| 成人教育av在线| 国产欧美一区二区在线观看| 国产精品蜜臀在线观看| 日本黄色一区二区| 色哟哟在线观看一区二区三区| 岛国av在线一区| 国产风韵犹存在线视精品| 韩国女主播一区| 国产精品 欧美精品| 国产盗摄一区二区| 99精品视频一区| 在线观看视频一区二区| 色综合天天综合网天天狠天天| 99在线热播精品免费| 91在线porny国产在线看| 欧美写真视频网站| 日韩免费电影网站| 国产精品久久一卡二卡| 亚洲精品中文在线| 看电视剧不卡顿的网站| 国产美女精品在线| 欧美视频一区在线| 日韩精品一区二区三区蜜臀| 久久久国产精品不卡| 亚洲精品高清视频在线观看| 亚洲免费在线播放| 精品综合久久久久久8888| 国产99精品国产| 欧美电影一区二区| 国产精品亲子乱子伦xxxx裸| 日本不卡免费在线视频| 国产91精品露脸国语对白| 欧美日韩国产三级| 国产日韩v精品一区二区| 一区二区三区精品| 国内精品国产三级国产a久久| 欧美性做爰猛烈叫床潮| 色94色欧美sute亚洲线路二| 色综合天天性综合| 91香蕉视频mp4| 久久蜜桃一区二区| 天天综合网 天天综合色| 成人禁用看黄a在线| 久久天天做天天爱综合色| 婷婷开心激情综合| 91国产丝袜在线播放| 国产拍欧美日韩视频二区| 日韩福利视频导航| 老司机午夜精品| 91精品国产综合久久香蕉麻豆| 亚洲一区视频在线观看视频| 丰满放荡岳乱妇91ww| 久久老女人爱爱| 国产成人亚洲精品青草天美| 91精品国产综合久久久久久漫画| 一个色妞综合视频在线观看| 91原创在线视频| 亚洲精品视频在线| 欧美精品乱码久久久久久| 亚洲亚洲人成综合网络| 欧洲另类一二三四区| 亚洲综合色区另类av| 日韩免费观看高清完整版在线观看| 亚洲成人精品一区二区| 欧美最新大片在线看| 亚洲福利视频一区| 精品国产乱码久久| 国产盗摄一区二区三区| 国产精品超碰97尤物18| 91精品福利视频| 国产最新精品精品你懂的| 国产欧美日韩在线| 成人白浆超碰人人人人| 夜夜揉揉日日人人青青一国产精品 | 91麻豆自制传媒国产之光| 综合久久久久综合| 欧美肥妇free| 成人动漫视频在线| 亚瑟在线精品视频| 欧美va亚洲va香蕉在线| a美女胸又www黄视频久久| 午夜欧美电影在线观看| 久久久久久亚洲综合影院红桃| 成人动漫一区二区| 蜜臀99久久精品久久久久久软件| 日韩欧美另类在线| 色综合天天狠狠| 粉嫩久久99精品久久久久久夜| 亚洲午夜免费电影| 国产精品久久久久久久第一福利| 欧美日韩国产综合视频在线观看| 国产精品一区二区在线看|