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

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

?? svm.cs

?? 這是C#版本開(kāi)發(fā)的SVM類庫(kù)包,適合不同愛(ài)好的同學(xué)學(xué)習(xí).
?? CS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*
 * Conversion notes:
 * Using JLCA 3.0, the only problem was with the save and loads. I changed them both to be
 * StreamR/W around a FileStream. Originally, the save was a BinaryWriter over a FileStream
 * and the Reader was a StreamReader over another StreamReader.
 * In the Java code, it's a DataOutputStream around a FileOutputStream and a BufferedReader
 * around a FileReader.
 */

using System;
namespace libsvm
{
	
	//
	// Kernel Cache
	//
	// l is the number of total data items
	// size is the cache size limit in bytes
	//
	class Cache
	{
		//UPGRADE_NOTE: Final was removed from the declaration of 'l '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private int l;
		private int size;
		//UPGRADE_NOTE: Field 'EnclosingInstance' was added to class 'head_t' to access its enclosing instance. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1019_3"'
		private sealed class head_t
		{
			public head_t(Cache enclosingInstance)
			{
				InitBlock(enclosingInstance);
			}
			private void  InitBlock(Cache enclosingInstance)
			{
				this.enclosingInstance = enclosingInstance;
			}
			private Cache enclosingInstance;
			public Cache Enclosing_Instance
			{
				get
				{
					return enclosingInstance;
				}
				
			}
			internal head_t prev, next; // a cicular list
			internal float[] data;
			internal int len; // data[0,len) is cached in this entry
		}
		//UPGRADE_NOTE: Final was removed from the declaration of 'head '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private head_t[] head;
		private head_t lru_head;
		
		internal 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(this);
			size /= 4;
			size -= l * (16 / 4); // sizeof(head_t) == 16
			lru_head = new head_t(this);
			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
		internal virtual 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)
					Array.Copy(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;
		}
		
		internal virtual 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 Kernel
	{
		private svm_node[][] x;
		//UPGRADE_NOTE: Final was removed from the declaration of 'x_square '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private double[] x_square;
		
		// svm_parameter
		//UPGRADE_NOTE: Final was removed from the declaration of 'kernel_type '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private int kernel_type;
		//UPGRADE_NOTE: Final was removed from the declaration of 'degree '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private double degree;
		//UPGRADE_NOTE: Final was removed from the declaration of 'gamma '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private double gamma;
		//UPGRADE_NOTE: Final was removed from the declaration of 'coef0 '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		private double coef0;
		
		internal abstract float[] get_Q(int column, int len);
		
		internal virtual 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 = System.Math.Exp(x);
			return 1.0 - 2.0 / (e * e + 1);
		}
		
		internal virtual 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 System.Math.Pow(gamma * dot(x[i], x[j]) + coef0, degree);
				
				case svm_parameter.RBF: 
					return System.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
				
			}
		}
		
		internal 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;
		}
		
		internal 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_Renamed * y[j++].value_Renamed;
				else
				{
					if (x[i].index > y[j].index)
						++j;
					else
						++i;
				}
			}
			return sum;
		}
		
		internal 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 System.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_Renamed - y[j++].value_Renamed;
							sum += d * d;
						}
						else if (x[i].index > y[j].index)
						{
							sum += y[j].value_Renamed * y[j].value_Renamed;
							++j;
						}
						else
						{
							sum += x[i].value_Renamed * x[i].value_Renamed;
							++i;
						}
					}
					
					while (i < xlen)
					{
						sum += x[i].value_Renamed * x[i].value_Renamed;
						++i;
					}
					
					while (j < ylen)
					{
						sum += y[j].value_Renamed * y[j].value_Renamed;
						++j;
					}
					
					return System.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
	{
		internal int active_size;
		internal sbyte[] y;
		internal double[] G; // gradient of objective function
		internal const sbyte LOWER_BOUND = 0;
		internal const sbyte UPPER_BOUND = 1;
		internal const sbyte FREE = 2;
		internal sbyte[] alpha_status; // LOWER_BOUND, UPPER_BOUND, FREE
		internal double[] alpha;
		internal Kernel Q;
		internal double eps;
		internal double Cp, Cn;
		internal double[] b;
		internal int[] active_set;
		internal double[] G_bar; // gradient, if we treat free variables as 0
		internal int l;
		internal bool unshrinked; // XXX
		
		//UPGRADE_NOTE: Final was removed from the declaration of 'INF '. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1003_3"'
		internal static readonly double INF = System.Double.PositiveInfinity;
		
		internal virtual double get_C(int i)
		{
			return (y[i] > 0)?Cp:Cn;
		}
		internal virtual 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;
		}
		internal virtual bool is_upper_bound(int i)
		{
			return alpha_status[i] == UPPER_BOUND;
		}
		internal virtual bool is_lower_bound(int i)
		{
			return alpha_status[i] == LOWER_BOUND;
		}
		internal virtual bool is_free(int i)
		{
			return alpha_status[i] == FREE;
		}
		
		// java: information about solution except alpha,
		// because we cannot return multiple values otherwise...
		internal class SolutionInfo
		{
			internal double obj;
			internal double rho;
			internal double upper_bound_p;
			internal double upper_bound_n;
			internal double r; // for Solver_NU
		}
		
		internal virtual void  swap_index(int i, int j)
		{
			Q.swap_index(i, j);
			do 
			{
				sbyte _ = y[i]; y[i] = y[j]; y[j] = _;
			}
			while (false);
			do 
			{
				double _ = G[i]; G[i] = G[j]; G[j] = _;
			}
			while (false);
			do 
			{
				sbyte _ = 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);
		}
		
		internal virtual 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];
				}
		}
		
		internal virtual void  Solve(int l, Kernel Q, double[] b_, sbyte[] y_, double[] alpha_, double Cp, double Cn, double eps, SolutionInfo si, int shrinking)
		{
			this.l = l;
			this.Q = Q;
			b = new double[b_.Length];
			b_.CopyTo(b, 0);
			y = new sbyte[y_.Length];
			y_.CopyTo(y, 0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲一区在线电影| 亚洲精品一二三| 日韩你懂的在线观看| 欧美人与性动xxxx| 欧美日本视频在线| 欧美二区乱c少妇| 欧美男人的天堂一二区| 欧美日韩一区二区三区视频 | 国产精品久线观看视频| 欧美国产精品一区| 国产精品欧美一级免费| 亚洲婷婷综合色高清在线| 亚洲蜜桃精久久久久久久| 亚洲精品乱码久久久久久| 夜夜嗨av一区二区三区网页| 亚洲电影激情视频网站| 日本美女一区二区| 国内精品视频666| 国产99久久久国产精品潘金| 9i在线看片成人免费| 99久久精品国产一区| 欧美亚洲动漫制服丝袜| 91精品国产91久久久久久最新毛片| 日韩精品影音先锋| 国产拍揄自揄精品视频麻豆| 综合av第一页| 亚洲一区二区综合| 精品中文字幕一区二区小辣椒| 国产盗摄女厕一区二区三区| 99国产精品久久久久久久久久 | 成人美女在线观看| 色综合久久久久网| 日韩一二三区不卡| 国产精品欧美极品| 亚洲成精国产精品女| 精品一区二区三区不卡 | 久久精品亚洲一区二区三区浴池 | 亚洲欧美电影院| 日韩va欧美va亚洲va久久| 国产美女在线观看一区| 91视频91自| 日韩欧美黄色影院| 中文字幕一区二区在线播放| 五月天丁香久久| 粉嫩欧美一区二区三区高清影视| 欧美性xxxxx极品少妇| 欧美成人一区二区| 亚洲免费观看高清完整版在线观看熊| 青青草国产精品亚洲专区无| 菠萝蜜视频在线观看一区| 欧美日韩三级视频| 中文字幕精品一区| 日本视频中文字幕一区二区三区| 成人久久18免费网站麻豆| 8x8x8国产精品| 中文字幕在线视频一区| 毛片av中文字幕一区二区| 91美女在线看| 久久久久国产精品麻豆ai换脸| 亚洲一区二区视频| 国产成人在线免费| 欧美精三区欧美精三区| 亚洲色图视频免费播放| 狠狠狠色丁香婷婷综合久久五月| 欧美亚洲国产一区在线观看网站 | 亚洲综合小说图片| 国产69精品久久777的优势| 欧美一区二区精美| 亚洲大片免费看| 99免费精品视频| 久久久九九九九| 蜜臀久久99精品久久久久宅男| 一本久久精品一区二区| 国产午夜精品久久久久久久 | 亚洲一区二区三区在线| 成人黄页在线观看| 久久女同性恋中文字幕| 无码av中文一区二区三区桃花岛| 91丨九色丨黑人外教| 国产欧美精品在线观看| 经典三级视频一区| 日韩午夜激情视频| 三级一区在线视频先锋| 欧美性三三影院| 亚洲乱码国产乱码精品精小说| 成人一道本在线| 欧美精品一区二区三区高清aⅴ | 亚洲伊人色欲综合网| 成人精品小蝌蚪| 国产欧美一区二区精品仙草咪| 麻豆成人免费电影| 日韩三级精品电影久久久| 日韩高清在线观看| 欧美精品在线一区二区三区| 亚洲国产精品影院| 欧美在线视频不卡| 岛国av在线一区| 国产亚洲欧美在线| 国产精品一二三四五| 久久久久国色av免费看影院| 国产老肥熟一区二区三区| 国产午夜精品一区二区三区视频 | 粉嫩av一区二区三区粉嫩| 国产午夜精品在线观看| 国产精品一区不卡| 国产精品午夜春色av| av在线不卡免费看| 亚洲精品国久久99热| 欧美视频在线观看一区二区| 亚洲国产一二三| 91精品国产高清一区二区三区蜜臀 | 欧美日韩国产高清一区二区| 午夜视频在线观看一区二区| 欧美高清性hdvideosex| 欧美aaaaa成人免费观看视频| 日韩一级免费观看| 精品一区二区三区免费观看| 精品国产乱码久久久久久蜜臀| 韩国一区二区三区| 欧美国产激情二区三区| 91麻豆成人久久精品二区三区| 一区二区三区成人在线视频| 欧美美女一区二区在线观看| 看电视剧不卡顿的网站| 国产亲近乱来精品视频| 一本大道久久a久久精品综合| 亚洲高清视频在线| 欧美成人一区二区| 成人理论电影网| 亚洲国产精品视频| 精品久久久久99| 99精品桃花视频在线观看| 亚洲aaa精品| 欧美精品一区男女天堂| aaa亚洲精品| 五月天精品一区二区三区| 久久品道一品道久久精品| 91色porny在线视频| 日本欧美加勒比视频| 国产午夜精品一区二区三区视频 | 精品国产一区久久| 99久久伊人网影院| 日韩制服丝袜av| 欧美国产日本视频| 欧美日韩一区二区三区视频| 国产麻豆一精品一av一免费| 亚洲人快播电影网| 精品理论电影在线| 91香蕉视频污| 久久se这里有精品| 亚洲精品伦理在线| 久久亚洲精品小早川怜子| 色香蕉久久蜜桃| 久久精品国产精品亚洲综合| 国产一区二区电影| 亚洲国产人成综合网站| 久久精品人人爽人人爽| 欧美日韩国产首页| 成人av影院在线| 久久电影网站中文字幕| 亚洲美女在线国产| 久久精品视频一区| 91精品视频网| 色综合中文字幕| 激情深爱一区二区| 亚洲h精品动漫在线观看| 亚洲欧洲色图综合| 26uuu精品一区二区在线观看| 欧美在线免费观看视频| 粗大黑人巨茎大战欧美成人| 美女视频黄免费的久久| 亚洲精品欧美专区| 欧美国产禁国产网站cc| 欧美大片在线观看一区二区| 欧美视频一区在线| 成人av电影在线播放| 久久99国产精品免费网站| 亚洲二区在线视频| 亚洲特黄一级片| 国产女人水真多18毛片18精品视频| 91精品在线一区二区| 91高清视频免费看| 99久久久久免费精品国产 | 日韩欧美色综合网站| 欧美性生活影院| aa级大片欧美| 国产成人午夜片在线观看高清观看| 日本最新不卡在线| 亚洲电影你懂得| 亚洲一区二区三区爽爽爽爽爽| 欧美国产成人精品| 国产丝袜在线精品| 久久久久久久av麻豆果冻| 欧美大白屁股肥臀xxxxxx| 91精品免费在线| 欧美日韩国产综合视频在线观看 | 国产日韩精品一区| 久久成人免费网| 视频一区二区三区中文字幕| 亚洲综合一二三区|