亚洲欧美第一页_禁久久精品乱码_粉嫩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):
			
			double sum = C * param.nu * l / 2;
			for (i = 0; i < l; i++)
			{
				alpha2[i] = alpha2[i + l] = System.Math.Min(sum, C);
				sum -= alpha2[i];
				
				linear_term[i] = - prob.y[i];
				y[i] = 1;
				
				linear_term[i + l] = prob.y[i];
				y[i + l] = - 1;
			}
			
			Solver_NU s = new Solver_NU();
			s.Solve(2 * l, new SVR_Q(prob, param), linear_term, y, alpha2, C, C, param.eps, si, param.shrinking);
			
			System.Console.Out.Write("epsilon = " + (- si.r) + "\n");
			
			for (i = 0; i < l; i++)
				alpha[i] = alpha2[i] - alpha2[i + l];
		}
		
		//
		// decision_function
		//
		internal class decision_function
		{
			internal double[] alpha;
			internal double rho;
		}
		
		
		internal static decision_function svm_train_one(svm_problem prob, svm_parameter param, double Cp, double Cn)
		{
			double[] alpha = new double[prob.l];
			Solver.SolutionInfo si = new Solver.SolutionInfo();
			switch (param.svm_type)
			{
				
				case svm_parameter.C_SVC: 
					solve_c_svc(prob, param, alpha, si, Cp, Cn);
					break;
				
				case svm_parameter.NU_SVC: 
					solve_nu_svc(prob, param, alpha, si);
					break;
				
				case svm_parameter.ONE_CLASS: 
					solve_one_class(prob, param, alpha, si);
					break;
				
				case svm_parameter.EPSILON_SVR: 
					solve_epsilon_svr(prob, param, alpha, si);
					break;
				
				case svm_parameter.NU_SVR: 
					solve_nu_svr(prob, param, alpha, si);
					break;
				}
			
			System.Console.Out.Write("obj = " + si.obj + ", rho = " + si.rho + "\n");
			
			// output SVs
			
			int nSV = 0;
			int nBSV = 0;
			for (int i = 0; i < prob.l; i++)
			{
				if (System.Math.Abs(alpha[i]) > 0)
				{
					++nSV;
					if (prob.y[i] > 0)
					{
						if (System.Math.Abs(alpha[i]) >= si.upper_bound_p)
							++nBSV;
					}
					else
					{
						if (System.Math.Abs(alpha[i]) >= si.upper_bound_n)
							++nBSV;
					}
				}
			}
			
			System.Console.Out.Write("nSV = " + nSV + ", nBSV = " + nBSV + "\n");
			
			decision_function f = new decision_function();
			f.alpha = alpha;
			f.rho = si.rho;
			return f;
		}
		
		// Platt's binary SVM Probablistic Output: an improvement from Lin et al.
		private static void  sigmoid_train(int l, double[] dec_values, double[] labels, double[] probAB)
		{
			double A, B;
			double prior1 = 0, prior0 = 0;
			int i;
			
			for (i = 0; i < l; i++)
				if (labels[i] > 0)
					prior1 += 1;
				else
					prior0 += 1;
			
			int max_iter = 100; // Maximal number of iterations
			double min_step = 1e-10; // Minimal step taken in line search
			double sigma = 1e-3; // For numerically strict PD of Hessian
			double eps = 1e-5;
			double hiTarget = (prior1 + 1.0) / (prior1 + 2.0);
			double loTarget = 1 / (prior0 + 2.0);
			double[] t = new double[l];
			double fApB, p, q, h11, h22, h21, g1, g2, det, dA, dB, gd, stepsize;
			double newA, newB, newf, d1, d2;
			int iter;
			
			// Initial Point and Initial Fun Value
			A = 0.0; B = System.Math.Log((prior0 + 1.0) / (prior1 + 1.0));
			double fval = 0.0;
			
			for (i = 0; i < l; i++)
			{
				if (labels[i] > 0)
					t[i] = hiTarget;
				else
					t[i] = loTarget;
				fApB = dec_values[i] * A + B;
				if (fApB >= 0)
					fval += t[i] * fApB + System.Math.Log(1 + System.Math.Exp(- fApB));
				else
					fval += (t[i] - 1) * fApB + System.Math.Log(1 + System.Math.Exp(fApB));
			}
			for (iter = 0; iter < max_iter; iter++)
			{
				// Update Gradient and Hessian (use H' = H + sigma I)
				h11 = sigma; // numerically ensures strict PD
				h22 = sigma;
				h21 = 0.0; g1 = 0.0; g2 = 0.0;
				for (i = 0; i < l; i++)
				{
					fApB = dec_values[i] * A + B;
					if (fApB >= 0)
					{
						p = System.Math.Exp(- fApB) / (1.0 + System.Math.Exp(- fApB));
						q = 1.0 / (1.0 + System.Math.Exp(- fApB));
					}
					else
					{
						p = 1.0 / (1.0 + System.Math.Exp(fApB));
						q = System.Math.Exp(fApB) / (1.0 + System.Math.Exp(fApB));
					}
					d2 = p * q;
					h11 += dec_values[i] * dec_values[i] * d2;
					h22 += d2;
					h21 += dec_values[i] * d2;
					d1 = t[i] - p;
					g1 += dec_values[i] * d1;
					g2 += d1;
				}
				
				// Stopping Criteria
				if (System.Math.Abs(g1) < eps && System.Math.Abs(g2) < eps)
					break;
				
				// Finding Newton direction: -inv(H') * g
				det = h11 * h22 - h21 * h21;
				dA = (- (h22 * g1 - h21 * g2)) / det;
				dB = (- ((- h21) * g1 + h11 * g2)) / det;
				gd = g1 * dA + g2 * dB;
				
				
				stepsize = 1; // Line Search
				while (stepsize >= min_step)
				{
					newA = A + stepsize * dA;
					newB = B + stepsize * dB;
					
					// New function value
					newf = 0.0;
					for (i = 0; i < l; i++)
					{
						fApB = dec_values[i] * newA + newB;
						if (fApB >= 0)
							newf += t[i] * fApB + System.Math.Log(1 + System.Math.Exp(- fApB));
						else
							newf += (t[i] - 1) * fApB + System.Math.Log(1 + System.Math.Exp(fApB));
					}
					// Check sufficient decrease
					if (newf < fval + 0.0001 * stepsize * gd)
					{
						A = newA; B = newB; fval = newf;
						break;
					}
					else
						stepsize = stepsize / 2.0;
				}
				
				if (stepsize < min_step)
				{
					System.Console.Error.Write("Line search fails in two-class probability estimates\n");
					break;
				}
			}
			
			if (iter >= max_iter)
				System.Console.Error.Write("Reaching maximal iterations in two-class probability estimates\n");
			probAB[0] = A; probAB[1] = B;
		}
		
		private static double sigmoid_predict(double decision_value, double A, double B)
		{
			double fApB = decision_value * A + B;
			if (fApB >= 0)
				return System.Math.Exp(- fApB) / (1.0 + System.Math.Exp(- fApB));
			else
				return 1.0 / (1 + System.Math.Exp(fApB));
		}
		
		// Method 2 from the multiclass_prob paper by Wu, Lin, and Weng
		private static void  multiclass_probability(int k, double[][] r, double[] p)
		{
			int t;
			int iter = 0, max_iter = 100;
			double[][] Q = new double[k][];
			for (int i = 0; i < k; i++)
			{
				Q[i] = new double[k];
			}
			double[] Qp = new double[k];
			double pQp, eps = 0.001;
			
			for (t = 0; t < k; t++)
			{
				p[t] = 1.0 / k; // Valid if k = 1
				Q[t][t] = 0;
				for (int j = 0; j < t; j++)
				{
					Q[t][t] += r[j][t] * r[j][t];
					Q[t][j] = Q[j][t];
				}
				for (int j = t + 1; j < k; j++)
				{
					Q[t][t] += r[j][t] * r[j][t];
					Q[t][j] = (- r[j][t]) * r[t][j];
				}
			}
			for (iter = 0; iter < max_iter; iter++)
			{
				// stopping condition, recalculate QP,pQP for numerical accuracy
				pQp = 0;
				for (t = 0; t < k; t++)
				{
					Qp[t] = 0;
					for (int j = 0; j < k; j++)
						Qp[t] += Q[t][j] * p[j];
					pQp += p[t] * Qp[t];
				}
				double max_error = 0;
				for (t = 0; t < k; t++)
				{
					double error = System.Math.Abs(Qp[t] - pQp);
					if (error > max_error)
						max_error = error;
				}
				if (max_error < eps)
					break;
				
				for (t = 0; t < k; t++)
				{
					double diff = (- Qp[t] + pQp) / Q[t][t];
					p[t] += diff;
					pQp = (pQp + diff * (diff * Q[t][t] + 2 * Qp[t])) / (1 + diff) / (1 + diff);
					for (int j = 0; j < k; j++)
					{
						Qp[j] = (Qp[j] + diff * Q[t][j]) / (1 + diff);
						p[j] /= (1 + diff);
					}
				}
			}
			if (iter >= max_iter)
				System.Console.Error.Write("Exceeds max_iter in multiclass_prob\n");
		}
		
		// Cross-validation decision values for probability estimates
		private static void  svm_binary_svc_probability(svm_problem prob, svm_parameter param, double Cp, double Cn, double[] probAB)
		{
			int i;
			int nr_fold = 5;
			int[] perm = new int[prob.l];
			double[] dec_values = new double[prob.l];
			
			// random shuffle
			for (i = 0; i < prob.l; i++)
				perm[i] = i;
			for (i = 0; i < prob.l; i++)
			{
				//UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1042_3"'
				int j = i + (int) (SupportClass.Random.NextDouble() * (prob.l - i));
				do 
				{
					int _ = perm[i]; perm[i] = perm[j]; perm[j] = _;
				}
				while (false);
			}
			for (i = 0; i < nr_fold; i++)
			{
				int begin = i * prob.l / nr_fold;
				int end = (i + 1) * prob.l / nr_fold;
				int j, k;
				svm_problem subprob = new svm_problem();
				
				subprob.l = prob.l - (end - begin);
				subprob.x = new svm_node[subprob.l][];
				subprob.y = new double[subprob.l];
				
				k = 0;
				for (j = 0; j < begin; j++)
				{
					subprob.x[k] = prob.x[perm[j]];
					subprob.y[k] = prob.y[perm[j]];
					++k;
				}
				for (j = end; j < prob.l; j++)
				{
					subprob.x[k] = prob.x[perm[j]];
					subprob.y[k] = prob.y[perm[j]];
					++k;
				}
				int p_count = 0, n_count = 0;
				for (j = 0; j < k; j++)
					if (subprob.y[j] > 0)
						p_count++;
					else
						n_count++;
				
				if (p_count == 0 && n_count == 0)
					for (j = begin; j < end; j++)
						dec_values[perm[j]] = 0;
				else if (p_count > 0 && n_count == 0)
					for (j = begin; j < end; j++)
						dec_values[perm[j]] = 1;
				else if (p_count == 0 && n_count > 0)
					for (j = begin; j < end; j++)
						dec_values[perm[j]] = - 1;
				else
				{
					svm_parameter subparam = (svm_parameter) param.Clone();
					subparam.probability = 0;
					subparam.C = 1.0;
					subparam.nr_weight = 2;
					subparam.weight_label = new int[2];
					subparam.weight = new double[2];
					subparam.weight_label[0] = + 1;
					subparam.weight_label[1] = - 1;
					subparam.weight[0] = Cp;
					subparam.weight[1] = Cn;
					svm_model submodel = svm_train(subprob, subparam);
					for (j = begin; j < end; j++)
					{
						double[] dec_value = new double[1];
						svm_predict_values(submodel, prob.x[perm[j]], dec_value);
						dec_values[perm[j]] = dec_value[0];
						// ensure +1 -1 order; reason not using CV subroutine
						dec_values[perm[j]] *= submodel.label[0];
					}
				}
			}
			sigmoid_train(prob.l, dec_values, prob.y, probAB);
		}
		
		// Return parameter of a Laplace distribution 
		private static double svm_svr_probability(svm_problem prob, svm_parameter param)
		{
			int i;
			int nr_fold = 5;
			double[] ymv = new double[prob.l];
			double mae = 0;
			
			svm_parameter newparam = (svm_parameter) param.Clone();
			newparam.probability = 0;
			svm_cross_validation(prob, newparam, nr_fold, ymv);
			for (i = 0; i < prob.l; i++)
			{
				ymv[i] = prob.y[i] - ymv[i];
				mae += System.Math.Abs(ymv[i]);
			}
			mae /= prob.l;
			double std = System.Math.Sqrt(2 * mae * mae);
			int count = 0;
			mae = 0;
			for (i = 0; i < prob.l; i++)
				if (System.Math.Abs(ymv[i]) > 5 * std)
					count = count + 1;
				else
					mae += System.Math.Abs(ymv[i]);
			mae /= (prob.l - count);
			System.Console.Error.Write("Prob. model for test data: target value = predicted value + z,\nz: Laplace distribution e^(-|z|/sigma)/(2sigma),sigma=" + mae + "\n");
			return mae;
		}
		
		//
		// Interface functions
		//
		public static svm_model svm_train(svm_problem prob, svm_parameter param)
		{
			svm_model model = new svm_model();
			model.param = param;
			
			if (param.svm_type == svm_parameter.ONE_CLASS || param.svm_type == svm_parameter.EPSILON_SVR || param.svm_type == svm_parameter.NU_SVR)
			{
				// regression or one-class-svm
				model.nr_class = 2;
				model.label = null;
				model.nSV = null;
				model.probA = null; model.probB = null;
				model.sv_coef = new double[1][];
				
				if (param.probability == 1 && (param.svm_type == svm_parameter.EPSILON_SVR || param.svm_type == svm_parameter.NU_SVR))
				{
					model.probA = new double[1];
					model.probA[0] = svm_svr_probability(prob, param);
				}
				
				decision_function f = svm_train_one(prob, param, 0, 0);
				model.rho = new double[1];
				model.rho[0] = f.rho;
				
				int nSV = 0;
				int i;
				for (i = 0; i < prob.l; i++)
					if (System.Math.Abs(f.alpha[i]) > 0)
						++nSV;
				model.l = nSV;
				model.SV = new svm_node[nSV][];
				model.sv_coef[0] = new double[nSV];
				int j = 0;
				for (i = 0; i < prob.l; i++)
					if (System.Math.Abs(f.alpha[i]) > 0)
					{
						model.SV[j] = prob.x[i];
						model.sv_coef[0][j] = f.alpha[i];
						++j;
					}
			}
			else
			{
				// classification
				// find out the number of classes
				int l = prob.l;
				int max_nr_class = 16;
				int nr_class = 0;
				int[] label = new int[max_nr_class];
				int[] count = new int[max_nr_class];
				int[] index = new int[l];
				
				int i;
				for (i = 0; i < l; i++)
				{
					//UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1042_3"'
					int this_label = (int) prob.y[i];
					int j;
					for (j = 0; j < nr_class; j++)
						if (this_label == label[j])
						{
							++count[j];
							break;
						}
					index[i] = j;
					if (j == nr_class)
					{
						if (nr_class == max_nr_class)
						{
							max_nr_class *= 2;
							int[] new_data = new int[max_nr_class];
							Array.Copy(label, 0, new_data, 0, label.Length);
							label = new_data;
							
							new_data = new int[max_nr_class];
							Array.Copy(count, 0, new_data, 0, count.Length);
							count = new_data;
						}
						label[nr_class] = this_label;
						count[nr_class] = 1;
						++nr_class;
					}
				}
				
				// group training data of the same class
				
				int[] start = new int[nr_class];
				start[0] = 0;
				for (i = 1; i < nr_class; i++)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产片| 欧美v亚洲v综合ⅴ国产v| 美女在线一区二区| 亚洲欧美一区二区在线观看| 欧美群妇大交群的观看方式| 成人av网址在线| 久久精品国产亚洲高清剧情介绍 | 色婷婷综合五月| 国产一区二区在线视频| 亚洲一区二区三区美女| 亚洲国产高清在线观看视频| 日韩小视频在线观看专区| 精品久久久久久综合日本欧美| 成人黄色网址在线观看| 久久av中文字幕片| 偷拍日韩校园综合在线| 中文字幕字幕中文在线中不卡视频| 欧美一区二区播放| 欧美性高清videossexo| 99v久久综合狠狠综合久久| 韩国v欧美v亚洲v日本v| 免费xxxx性欧美18vr| 亚洲香蕉伊在人在线观| 亚洲欧美日韩系列| 中文一区一区三区高中清不卡| 欧美电影免费观看高清完整版在线观看 | 欧美一区二区在线免费播放| 欧美亚洲愉拍一区二区| 91麻豆国产福利精品| 成人久久18免费网站麻豆| 国产寡妇亲子伦一区二区| 美女在线一区二区| 久久不见久久见免费视频7| 奇米四色…亚洲| 日韩av网站在线观看| 日韩国产精品久久久| 亚洲国产精品嫩草影院| 亚洲电影第三页| 亚洲一区二区三区爽爽爽爽爽 | 1000部国产精品成人观看| 国产精品美女久久久久久久久 | 高清视频一区二区| 国产精品 日产精品 欧美精品| 精品一区二区影视| 国产精品白丝jk黑袜喷水| 国产精华液一区二区三区| 在线免费一区三区| 欧美日韩国产大片| 91精品国产全国免费观看| 日韩欧美精品在线视频| 久久香蕉国产线看观看99| 国产午夜精品久久久久久免费视| 欧美国产激情二区三区 | 国产欧美一区二区精品性色超碰| 国产日韩av一区二区| 中文字幕一区二区三区色视频| 亚洲人成精品久久久久久| 亚洲国产日日夜夜| 免费成人av在线播放| 国产精品一二三四五| av网站免费线看精品| 91福利精品视频| 日韩一区二区免费在线观看| 久久亚洲综合av| 综合婷婷亚洲小说| 午夜欧美一区二区三区在线播放| 日韩精品91亚洲二区在线观看| 激情综合一区二区三区| 成人一区二区三区视频| 欧洲生活片亚洲生活在线观看| 91麻豆精品国产综合久久久久久| 久久中文娱乐网| 亚洲三级在线播放| 免费在线看一区| 国产91精品久久久久久久网曝门| 91行情网站电视在线观看高清版| 91精品国产色综合久久不卡蜜臀 | 欧美一卡二卡在线| 国产精品天干天干在观线| 亚洲国产精品嫩草影院| 国产精品小仙女| 欧美性生活影院| 国产亚洲欧美日韩俺去了| 亚洲综合图片区| 国产精品亚洲第一区在线暖暖韩国| k8久久久一区二区三区| 欧美一级生活片| 亚洲天堂2016| 久久超级碰视频| 在线观看国产91| 国产三区在线成人av| 日韩激情一二三区| 97精品久久久午夜一区二区三区| 91精品国产免费| 亚洲视频网在线直播| 精品一区二区三区日韩| 欧美综合一区二区三区| 国产欧美久久久精品影院| 日韩1区2区3区| 日本精品一级二级| 亚洲国产高清在线| 久久不见久久见免费视频1| 在线观看一区二区视频| 国产欧美日韩在线看| 青青草伊人久久| 欧美亚洲一区二区在线| 国产精品电影一区二区三区| 久久国产人妖系列| 欧美片网站yy| 亚洲资源在线观看| 99精品久久只有精品| 久久午夜免费电影| 日本不卡123| 欧美精品三级日韩久久| 亚洲乱码精品一二三四区日韩在线| 国产精品综合在线视频| 日韩欧美亚洲国产精品字幕久久久| 一区二区免费视频| 91日韩精品一区| 国产精品护士白丝一区av| 国产精品影音先锋| 日韩欧美精品在线视频| 日产精品久久久久久久性色| 欧美三级日韩三级| 一区二区三区四区在线播放| av在线播放一区二区三区| 欧美国产一区在线| 国产成人精品免费一区二区| 欧美精品一区二区三区蜜臀| 裸体健美xxxx欧美裸体表演| 5858s免费视频成人| 婷婷激情综合网| 欧美日韩1234| 日韩av网站免费在线| 欧美一区二区精品在线| 人人精品人人爱| 日韩欧美黄色影院| 狠狠色2019综合网| 久久久精品tv| 高清不卡一区二区在线| 国产欧美精品一区aⅴ影院| 成人午夜免费电影| 中文字幕一区二区三区av| 91一区二区在线| 一区二区三区波多野结衣在线观看| 91久久香蕉国产日韩欧美9色| 一区二区三区视频在线看| 欧美亚洲图片小说| 日韩成人dvd| 欧美精品一区二区三区蜜臀| 国产激情视频一区二区三区欧美| 国产偷国产偷亚洲高清人白洁| 大白屁股一区二区视频| 亚洲视频免费在线| 欧美日韩中文一区| 久久精品国产77777蜜臀| 精品国产乱码久久久久久老虎 | 亚洲欧美日韩国产一区二区三区 | 色婷婷综合久久久中文字幕| 亚洲综合一区在线| 日韩欧美久久一区| 懂色av一区二区三区免费看| 亚洲欧美另类图片小说| 欧美色偷偷大香| 六月丁香综合在线视频| 国产欧美va欧美不卡在线| 一本色道综合亚洲| 青青草国产成人av片免费| 久久久久久久久久久久久女国产乱| www.综合网.com| 亚洲成人午夜影院| 久久免费偷拍视频| 色婷婷精品大视频在线蜜桃视频 | 午夜国产不卡在线观看视频| 精品免费国产一区二区三区四区| 粉嫩av一区二区三区在线播放| 亚洲一区电影777| 久久久综合精品| 欧美性大战久久久| 国产一区视频导航| 亚洲一二三区在线观看| 2021国产精品久久精品| 日本道色综合久久| 韩国女主播一区| 亚洲一区中文日韩| 国产日产亚洲精品系列| 欧美高清视频在线高清观看mv色露露十八| 韩日av一区二区| 亚洲一区二区五区| 欧美国产在线观看| 日韩一级大片在线观看| 91免费国产视频网站| 精品一区二区在线播放| 亚洲一区免费观看| 欧美国产精品v| 欧美成人乱码一区二区三区| 在线视频亚洲一区| 成人福利视频网站| 精东粉嫩av免费一区二区三区| 一区二区三区在线看|