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; } }
// [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)); } }