Beispiel #1
0
        private static void CreateDepStat(string trainPath, string testPath, string ids, string target, string depstatPath, string measureField)
        {
            var fmngr = new FactorManager();
            fmngr.Load(depstatPath, target, measureField);

            var fdList = new List<double>();
            fdList.Add(0);
            fdList.Add(0.5);
            fdList.Add(1);
            fdList.Add(1.5);
            fdList = fdList.OrderByDescending(c => c).ToList();

            var tdList = new List<double>(fmngr.GetTargetValues());
            tdList = tdList.OrderByDescending(c => c).ToList();

            using (var sw = new StreamWriter(new FileStream("depstat.csv", FileMode.Create, FileAccess.Write)))
            {
                sw.WriteLine("td;fd;cnt;last_auc;best_auc;vars;measure");
                var countedDict = new Dictionary<string, ClassifierResult>();

                foreach (double td in tdList)
                {
                    foreach (double fd in fdList)
                    {
                        try
                        {
                            fmngr.TargDep = td;
                            fmngr.FactorDep = fd;
                            fmngr.SelectFactors();
                            var factors = fmngr.VisibleFactors;
                            Array.Sort(factors);
                            string vstr = string.Join("@", factors);

                            if (!countedDict.ContainsKey(vstr))
                            {
                                var cls = new DecisionForest();
                                var fdict = factors.ToDictionary(c => c);

                                foreach (string variable in fmngr.FactorDict.Keys)
                                {
                                    if (!fdict.ContainsKey(variable))
                                        cls.AddDropColumn(variable);
                                }

                                cls.LoadData();
                                var result = cls.Build();
                                countedDict.Add(vstr, result);
                            }
                            else
                            {
                                Logger.Log("skipping...");
                            }

                            sw.WriteLine(fmngr.TargDep.ToString("F06") + ";" + fmngr.FactorDep.ToString("F06") + ";" + factors.Length + ";" + countedDict[vstr].LastResult.AUC + ";" + countedDict[vstr].BestResult.AUC + ";" + vstr + ";" + measureField);
                            sw.Flush();
                            Logger.Log("td=" + td.ToString("F06") + "; fd=" + fd.ToString("F06") + "; cnt=" + factors.Length + ";" + countedDict[vstr].LastResult.AUC);
                        }
                        catch (Exception e)
                        {
                            Logger.Log(e);
                        }
                    }
                }
            }
        }