Ejemplo n.º 1
0
 /// <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);
 }
Ejemplo n.º 2
0
        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
            });
        }