/// <summary> /// 将识别结果合并 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static IdentifyResult CombineIdResult(IdentifyResult a, IdentifyResult b) { if (a == null) { return(b); } a.Items.Concat(b.Items); return(a); }
public BindResult PredictForAPI(Spectrum spec, bool needFilter = true, int numOfId = 5, int topK = 1) { if (this.IdModels.Count > 0) { IdentifyResult iresult = null; foreach (var i in this.IdModels) { iresult = CombineIdResult(iresult, i.Predict(spec, needFilter, numOfId, topK)); } if (iresult != null && iresult.Items.Where(d => d.Result).Count() > 0) { iresult = IdentifyModel.GetPredictValue(iresult, iresult.Items.Length, numOfId); return(new BindResult() { MethodType = PredictMethod.Identify, Result = iresult }); } } if (this.FitModels.Count > 0) { var fitmodel = Serialize.DeepClone <FittingModel>(this.FitModels.First()); for (int i = 1; i < this.FitModels.Count; i++) { fitmodel.SpecLib.Merger(this.FitModels[i].SpecLib); } var flst = new List <FittingResult>();//这里需要修改,将List<FittingResult>改为FittingResult flst.Add(fitmodel.Predict(spec, needFilter, numOfId, topK)); if (flst.Where(d => d.Result).Count() > 0) { return new BindResult() { MethodType = PredictMethod.Fitting, Result = flst.Where(d => d.Result).OrderByDescending(d => d.TQ).FirstOrDefault() } } ; } if (this.PLS != null) { var plsr = this.PLS.Predict(spec, needFilter, numOfId); return(new BindResult() { MethodType = PredictMethod.PLSBind, Result = plsr }); } return(new BindResult() { MethodType = PredictMethod.None }); }