コード例 #1
0
        private void button5_Click(object sender, EventArgs e)
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\密度.Lib");

            var model = new SubPLS1Model();

            model.Comp      = specbase.First().Components.First();
            model.MaxFactor = 20;
            // var model = new IdentifyModel() { Wind = 11, MinSQ = 0.98, TQ = 0.998 };

            model.Filters = new List <IFilter>();
            model.Filters.Add(new Sgdiff(21, 2, 2));
            //model.Filters.Add(new SavitzkyGolay(5));

            var xidx = new List <RegionPoint>();

            xidx.Add(new RegionPoint(4002, 4702));
            xidx.Add(new RegionPoint(5302, 6102));
            var varregion = new VarRegionManu();
            var argu      = varregion.Argus;

            argu["XaxisRegion"].Value = xidx;
            argu["Xaxis"].Value       = specbase.First().Data.X;
            varregion.Argus           = argu;
            model.Filters.Add(varregion);

            for (int i = 0; i < 10; i++)
            {
                var      cv  = new CrossValidation <SubPLS1Result>(model);
                DateTime dt1 = DateTime.Now;
                //cv.CV(specbase, false);
                //var span1 = (DateTime.Now - dt1).TotalMilliseconds;

                dt1 = DateTime.Now;
                cv.CV(specbase, true);
                var span2 = (DateTime.Now - dt1).TotalMilliseconds;
            }
        }
コード例 #2
0
        // [TestMethod]
        public void PLSTest()
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib");
            var pls      = new PLSModel();

            pls.LibBase = specbase;


            var m = new SubPLS1Model();

            m.ParentModel = pls;
            m.MaxFactor   = 6;
            m.LibBase     = specbase;
            m.Comp        = specbase.First().Components.First();
            m.Filters     = new List <IFilter>();
            m.Filters.Add(new Sgdiff(21, 2));
            m.Filters.Add(new SavitzkyGolay(5));


            var f3 = new VarRegionManu();

            f3.Xaxis = specbase.First().Data.X;
            var a = f3.Argus;

            a["Xaxis"].Value = f3.Xaxis;
            f3.XaxisRegion   = new System.Collections.Generic.List <RegionPoint>();
            f3.XaxisRegion.Add(new RegionPoint(4003, 4702));
            a["XaxisRegion"].Value = f3.XaxisRegion;
            f3.Argus = a;

            m.Filters.Add(f3);

            m.Train(specbase);


            var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\b.mat");

            writer.WriteMatrix <double>(m.SubModel.Bias.ToColumnMatrix(), "b");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Loads.mat");
            writer.WriteMatrix <double>(m.SubModel.Loads, "Loads");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Score_Length.mat");
            writer.WriteMatrix <double>(m.SubModel.Score_Length.ToColumnMatrix(), "Score_Length");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Scores.mat");
            writer.WriteMatrix <double>(m.SubModel.Scores, "Scores");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Weights.mat");
            writer.WriteMatrix <double>(m.SubModel.Weights, "Weights");
            writer.Close();

            var lst  = m.LibBase.Where(d => d.Usage == UsageTypeEnum.Validate);
            var rlst = new List <SubPLS1Result>();

            foreach (var s in lst)
            {
                rlst.Add(m.Predict(s));
            }
        }