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

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

?? solver.cs

?? SVM的一個源程序
?? CS
?? 第 1 頁 / 共 5 頁
字號:


                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 + Math.Log(1 + Math.Exp(-fApB));
                        else
                            newf += (t[i] - 1) * fApB + Math.Log(1 + 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)
                {
                    Debug.Write("Line search fails in two-class probability estimates\n");
                    break;
                }
            }

            if (iter >= max_iter)
                Debug.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 Math.Exp(-fApB) / (1.0 + Math.Exp(-fApB));
            else
                return 1.0 / (1 + 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,j;
		int iter = 0, max_iter=Math.Max(100,k);
		double[,] Q=new double[k,k];
		double[] Qp= new double[k];
		double pQp, eps=0.005/k;
	
		for (t=0;t<k;t++)
		{
			p[t]=1.0/k;  // Valid if k = 1
			Q[t,t]=0;
			for (j=0;j<t;j++)
			{
				Q[t,t]+=r[j,t]*r[j,t];
				Q[t,j]=Q[j,t];
			}
			for (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 (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=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 (j=0;j<k;j++)
				{
					Qp[j]=(Qp[j]+diff*Q[t,j])/(1+diff);
					p[j]/=(1+diff);
				}
			}
		}
		if (iter>=max_iter)
			Debug.Write("Exceeds max_iter in multiclass_prob\n");
	}

        // Cross-validation decision values for probability estimates
        private static void svm_binary_svc_probability(Problem prob, Parameter param, double Cp, double Cn, double[] probAB)
        {
            Random rand = new Random();
            int i;
            int nr_fold = 5;
            int[] perm = new int[prob.Count];
            double[] dec_values = new double[prob.Count];

            // random shuffle
            for (i = 0; i < prob.Count; i++) perm[i] = i;
            for (i = 0; i < prob.Count; i++)
            {
                int j = i + (int)(rand.NextDouble() * (prob.Count - i));
                do { int _ = perm[i]; perm[i] = perm[j]; perm[j] = _; } while (false);
            }
            for (i = 0; i < nr_fold; i++)
            {
                int begin = i * prob.Count / nr_fold;
                int end = (i + 1) * prob.Count / nr_fold;
                int j, k;
                Problem subprob = new Problem();

                subprob.Count = prob.Count - (end - begin);
                subprob.X = new Node[subprob.Count][];
                subprob.Y = new double[subprob.Count];

                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.Count; 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
                {
                    Parameter subparam = (Parameter)param.Clone();
                    subparam.Probability = false;
                    subparam.C = 1.0;
                    subparam.WeightCount = 2;
                    subparam.WeightLabels = new int[2];
                    subparam.Weights = new double[2];
                    subparam.WeightLabels[0] = +1;
                    subparam.WeightLabels[1] = -1;
                    subparam.Weights[0] = Cp;
                    subparam.Weights[1] = Cn;
                    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.ClassLabels[0];
                    }
                }
            }
            sigmoid_train(prob.Count, dec_values, prob.Y, probAB);
        }

        // Return parameter of a Laplace distribution 
        private static double svm_svr_probability(Problem prob, Parameter param)
        {
            int i;
            int nr_fold = 5;
            double[] ymv = new double[prob.Count];
            double mae = 0;

            Parameter newparam = (Parameter)param.Clone();
            newparam.Probability = false;
            svm_cross_validation(prob, newparam, nr_fold, ymv);
            for (i = 0; i < prob.Count; i++)
            {
                ymv[i] = prob.Y[i] - ymv[i];
                mae += Math.Abs(ymv[i]);
            }
            mae /= prob.Count;
            double std = Math.Sqrt(2 * mae * mae);
            int count = 0;
            mae = 0;
            for (i = 0; i < prob.Count; i++)
                if (Math.Abs(ymv[i]) > 5 * std)
                    count = count + 1;
                else
                    mae += Math.Abs(ymv[i]);
            mae /= (prob.Count - count);
            Debug.Write("Prob. model for test data: target value = predicted value + z,\nz: Laplace distribution e^(-|z|/sigma)/(2sigma),sigma=" + mae + "\n");
            return mae;
        }

        // label: label name, start: begin of each class, count: #data of classes, perm: indices to the original data
        // perm, length l, must be allocated before calling this subroutine
        private static void svm_group_classes(Problem prob, int[] nr_class_ret, int[][] label_ret, int[][] start_ret, int[][] count_ret, int[] perm)
        {
            int l = prob.Count;
            int max_nr_class = 16;
            int nr_class = 0;
            int[] label = new int[max_nr_class];
            int[] count = new int[max_nr_class];
            int[] data_label = new int[l];
            int i;

            for (i = 0; i < l; i++)
            {
                int this_label = (int)(prob.Y[i]);
                int j;
                for (j = 0; j < nr_class; j++)
                {
                    if (this_label == label[j])
                    {
                        ++count[j];
                        break;
                    }
                }
                data_label[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;
                }
            }

            int[] start = new int[nr_class];
            start[0] = 0;
            for (i = 1; i < nr_class; i++)
                start[i] = start[i - 1] + count[i - 1];
            for (i = 0; i < l; i++)
            {
                perm[start[data_label[i]]] = i;
                ++start[data_label[i]];
            }
            start[0] = 0;
            for (i = 1; i < nr_class; i++)
                start[i] = start[i - 1] + count[i - 1];

            nr_class_ret[0] = nr_class;
            label_ret[0] = label;
            start_ret[0] = start;
            count_ret[0] = count;
        }

        //
        // Interface functions
        //
        public static Model svm_train(Problem prob, Parameter param)
        {
            Model model = new Model();
            model.Parameter = param;

            if (param.SvmType == SvmType.ONE_CLASS ||
               param.SvmType == SvmType.EPSILON_SVR ||
               param.SvmType == SvmType.NU_SVR)
            {
                // regression or one-class-svm
                model.NumberOfClasses = 2;
                model.ClassLabels = null;
                model.NumberOfSVPerClass = null;
                model.PairwiseProbabilityA = null; model.PairwiseProbabilityB = null;
                model.SupportVectorCoefficients = new double[1][];

                if (param.Probability &&
                   (param.SvmType == SvmType.EPSILON_SVR ||
                    param.SvmType == SvmType.NU_SVR))
                {
                    model.PairwiseProbabilityA = new double[1];
                    model.PairwiseProbabilityA[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.Count; i++)
                    if (Math.Abs(f.alpha[i]) > 0) ++nSV;
                model.SupportVectorCount = nSV;
                model.SupportVectors = new Node[nSV][];
                model.SupportVectorCoefficients[0] = new double[nSV];
                int j = 0;
                for (i = 0; i < prob.Count; i++)
                    if (Math.Abs(f.alpha[i]) > 0)
                    {
                        model.SupportVectors[j] = prob.X[i];
                        model.SupportVectorCoefficients[0][j] = f.alpha[i];
                        ++j;
                    }
            }
            else
            {
                // classification
                int l = prob.Count;
                int[] tmp_nr_class = new int[1];
                int[][] tmp_label = new int[1][];
                int[][] tmp_start = new int[1][];
                int[][] tmp_count = new int[1][];
                int[] perm = new int[l];

                // group training data of the same class
                svm_group_classes(prob, tmp_nr_class, tmp_label, tmp_start, tmp_count, perm);
                int nr_class = tmp_nr_class[0];
                int[] label = tmp_label[0];
                int[] start = tmp_start[0];
                int[] count = tmp_count[0];
                Node[][] x = new Node[l][];
                int i;
                for (i = 0; i < l; i++)
                    x[i] = prob.X[perm[i]];

                // calculate weighted C

                double[] weighted_C = new double[nr_class];
                for (i = 0; i < nr_class; i++)
                    weighted_C[i] = param.C;
                for (i = 0; i < param.WeightCount; i++)
                {
                    int j;
                    for (j = 0; j < nr_class; j++)
                        if (param.WeightLabels[i] == label[j])
                            break;
                    if (j == nr_class)
                        Debug.Write("warning: class label " + param.WeightLabels[i] + " specified in weight is not found\n");
                    else
                        weighted_C[j] *= param.Weights[i];
                }

                // train k*(k-1)/2 models

                bool[] nonzero = new bool[l];
                for (i = 0; i < l; i++)
                    nonzero[i] = false;
                decision_function[] f = new decision_function[nr_class * (nr_class - 1) / 2];

                double[] probA = null, probB = null;
                if (param.Probabilit

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍一区| 免费视频最近日韩| 91啪在线观看| 亚洲美女区一区| 欧美日韩一区在线| 五月激情综合婷婷| 欧美一级搡bbbb搡bbbb| 久久国产生活片100| 久久精品男人天堂av| 成人精品视频一区二区三区| 中文字幕字幕中文在线中不卡视频| 99久久综合99久久综合网站| 亚洲黄色小视频| 欧美一区二区三区啪啪| 成人做爰69片免费看网站| 一区二区三区四区乱视频| 欧美男女性生活在线直播观看| 麻豆精品在线观看| 国产欧美综合在线观看第十页 | 欧美片在线播放| 毛片av一区二区| 综合分类小说区另类春色亚洲小说欧美| 欧美中文字幕亚洲一区二区va在线| 日韩高清国产一区在线| 久久亚洲综合av| 在线观看国产一区二区| 国产综合成人久久大片91| 亚洲免费观看高清完整| 精品国精品国产| 欧美午夜理伦三级在线观看| 久久99深爱久久99精品| 国产精品国产自产拍高清av王其| 欧美精品在线视频| 国产成人午夜视频| 婷婷六月综合亚洲| 国产精品久久久久久久久晋中 | 99久久伊人久久99| 日韩av一级片| 亚洲乱码中文字幕| 26uuu另类欧美亚洲曰本| 91国模大尺度私拍在线视频| 国产一区二区在线视频| 三级久久三级久久久| 中文天堂在线一区| 精品国产免费人成电影在线观看四季| 一本色道亚洲精品aⅴ| 国产一区 二区 三区一级| 亚洲一区二区三区在线| 中文幕一区二区三区久久蜜桃| 91精品国产91久久综合桃花| 91美女在线看| 夫妻av一区二区| 久久精工是国产品牌吗| 日韩国产一二三区| 亚洲精品一二三四区| 国产日韩精品一区二区三区| 欧美v日韩v国产v| 欧美日高清视频| 欧洲亚洲精品在线| 9色porny自拍视频一区二区| 国产乱子伦一区二区三区国色天香| 午夜精品久久久久久久久| 亚洲精品乱码久久久久久久久| 国产精品福利电影一区二区三区四区| 久久综合精品国产一区二区三区 | 成人免费观看av| 国产不卡视频一区| 国产福利一区二区三区视频 | 久久国产生活片100| 亚洲高清在线精品| 亚洲激情校园春色| 亚洲三级在线观看| 亚洲同性同志一二三专区| 中文字幕 久热精品 视频在线| 久久久噜噜噜久久中文字幕色伊伊| 欧美一级片在线观看| 91麻豆精品国产综合久久久久久 | 久久综合999| 日韩视频一区二区| 日韩欧美国产午夜精品| 欧美一级在线免费| 欧美一三区三区四区免费在线看| 欧美日韩二区三区| 欧美二区三区91| 日韩欧美国产不卡| 日韩女优av电影在线观看| 日韩精品在线一区二区| 欧美变态tickling挠脚心| 欧美精品一区二区三区一线天视频| 精品国产一区二区三区不卡| 26uuu成人网一区二区三区| 精品国一区二区三区| 国产亚洲综合在线| 国产精品久久久久影院亚瑟| 综合色中文字幕| 亚洲一区二区高清| 男女激情视频一区| 国产一区二区三区四区五区入口| 国产高清久久久| 色欧美片视频在线观看| 欧美色男人天堂| 日韩欧美一区在线| 中文字幕免费不卡在线| 亚洲精品欧美在线| 日本va欧美va精品发布| 国产精一品亚洲二区在线视频| 成人激情午夜影院| 欧美最猛性xxxxx直播| 日韩一区二区免费在线观看| 久久女同精品一区二区| 亚洲视频电影在线| 日韩精品成人一区二区三区| 国产盗摄视频一区二区三区| 91福利视频在线| 日韩一区二区精品在线观看| 久久理论电影网| 一区二区三区在线观看网站| 日本欧美大码aⅴ在线播放| 懂色av一区二区在线播放| 在线观看网站黄不卡| 精品国产免费人成电影在线观看四季| 国产精品欧美一区喷水| 午夜欧美一区二区三区在线播放| 国内偷窥港台综合视频在线播放| 99精品在线观看视频| 欧美一级搡bbbb搡bbbb| 亚洲猫色日本管| 韩日av一区二区| 欧美性欧美巨大黑白大战| 久久综合久久综合久久综合| 亚洲精品视频免费看| 国产呦萝稀缺另类资源| 在线免费观看不卡av| 国产农村妇女毛片精品久久麻豆 | www.在线成人| 欧美成人三级电影在线| 亚洲日本中文字幕区| 国产真实乱子伦精品视频| 欧美在线三级电影| 日本一区二区电影| 免费高清不卡av| 欧美三级视频在线播放| 亚洲国产精品成人综合色在线婷婷| 亚洲成人自拍网| 成人av在线观| 国产亚洲成av人在线观看导航| 日本不卡一区二区三区| 91久久精品一区二区三区| 中文字幕av一区二区三区免费看| 久久国产人妖系列| 欧美日韩高清一区二区不卡| 亚洲天堂2016| 成人动漫一区二区在线| 久久久久高清精品| 激情五月激情综合网| 欧美一级夜夜爽| 五月综合激情婷婷六月色窝| 91热门视频在线观看| 国产精品国模大尺度视频| 国产精品一区二区在线播放 | 日本不卡视频在线观看| 欧美老年两性高潮| 亚洲福利视频一区| 91久久精品一区二区三| 亚洲婷婷国产精品电影人久久| 国产高清视频一区| 国产午夜亚洲精品理论片色戒| 国产一区欧美日韩| 26uuu亚洲综合色| 国产一区999| 国产欧美精品一区二区三区四区| 国产一区二区不卡老阿姨| www久久精品| 国产99精品国产| 国产精品午夜春色av| 91在线看国产| 亚洲成人黄色小说| 欧美日本一区二区| 日韩激情中文字幕| 欧美日韩精品二区第二页| 视频一区二区三区在线| 日韩一区二区在线观看视频| 国产美女精品在线| 国产精品情趣视频| 91豆麻精品91久久久久久| 亚洲高清视频中文字幕| 欧美一区二区三区小说| 久久99精品国产麻豆不卡| 久久九九99视频| 91论坛在线播放| 无码av免费一区二区三区试看| 欧美一区二区三区成人| 国产精品88888| 亚洲欧洲精品一区二区三区不卡| 欧洲人成人精品| 蜜桃av一区二区| 中文字幕国产一区| 欧美性高清videossexo| 精品一区二区三区在线播放| 中文字幕色av一区二区三区|