public void TestBcLrSameModel()
        {
            var methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
            var output     = FileHelper.GetOutputFile("bc-lr.zip", methodName);
            var name       = FileHelper.GetOutputFile("bc.txt", methodName);
            var df         = DataFrameIO.ReadStr("Label,X1,X2,X3,X4,X5,X6,X7,X8,X9\n" +
                                                 "0,0.1,1.1,2.1,3.1,4.1,5.1,6.2,7.4,-5\n" +
                                                 "1,1.1,1.1,2.1,3.1,4.1,5.1,6.2,7.4,-5\n" +
                                                 "0,2.1,1.1,3.1,3.1,-4.1,5.1,6.2,7.4,-5\n" +
                                                 "1,3.1,1.1,4.1,3.1,4.1,-5.1,6.2,7.4,-5\n" +
                                                 "0,4.1,1.1,2.1,3.1,4.1,5.1,6.2,-7.4,-5");

            df.ToCsv(name);
            var cmd = string.Format("Train tr=lr data={0} out={1} loader=text{{col=Label:R4:0 col=Features:R4:1-* sep=, header=+}}",
                                    name, output);

            var        stdout = new StringBuilder();
            ILogWriter logout = new LogWriter((string s) => { stdout.Append(s); });
            ILogWriter logerr = new LogWriter((string s) => { stdout.Append(s); });
            /*using (*/
            var env = new DelegateEnvironment(seed: 0, verbose: 2, outWriter: logout, errWriter: logerr);

            MamlHelper.MamlScript(cmd, false, env);
            var stout = stdout.ToString();

            if (string.IsNullOrEmpty(stout))
            {
                throw new Exception(stout);
            }
        }
        public void TestMamlCodeGen()
        {
            var        methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
            var        data       = FileHelper.GetTestFile("data_train_test.csv");
            var        output     = FileHelper.GetOutputFile("model.zip", methodName);
            var        bout       = new StringBuilder();
            var        berr       = new StringBuilder();
            ILogWriter stout      = new LogWriter(s => bout.Append(s));
            ILogWriter sderr      = new LogWriter(s => berr.Append(s));
            var        cmd        = "chain cmd=train{\n" +
                                    "data = __INPUT__\n" +
                                    "loader = text{col=ItemID:I8:0 col=Sentiment:R4:1 col=SentimentSource:TX:2 \n" +
                                    "              col=SentimentText:TX:3 col=RowNum:R4:4 \n" +
                                    "              col=Label:BL:5 col=Train:BL:6 col=Small:BL:7 header=+ sep=,}\n" +
                                    "xf = concat {col=Features:RowNum,Sentiment}\n" +
                                    "tr = FastTreeBinaryClassification{iter=2}\n" +
                                    "out = __OUTPUT__} \n" +
                                    "cmd = codegen{in=__OUTPUT__ cs=ft_sentiment_cs}";

            cmd = cmd.Replace("__INPUT__", data);
            cmd = cmd.Replace("__OUTPUT__", output);

            using (var env = new DelegateEnvironment(outWriter: stout, errWriter: sderr, verbose: 3))
            {
                MamlHelper.MamlScript(cmd, false, env);
                var sout = bout.ToString();
                Assert.IsTrue(sout.Length > 0);
                Assert.IsTrue(!sout.Contains("Unknown"));
            }
        }
        public void TestMamlHelperHelp()
        {
            var sout = MamlHelper.MamlScript("?", true);

            if (!sout.Contains("Train"))
            {
                throw new Exception(sout);
            }
        }
        public void TestHelpScorer()
        {
            var        bout  = new StringBuilder();
            var        berr  = new StringBuilder();
            ILogWriter stout = new LogWriter(s => bout.Append(s));
            ILogWriter sderr = new LogWriter(s => berr.Append(s));

            using (var env = new DelegateEnvironment(outWriter: stout, errWriter: sderr, verbose: 3))
            {
                var cmd = "? MultiClassClassifierScorer";
                MamlHelper.MamlScript(cmd, false, env);
                var sout = bout.ToString();
                Assert.IsTrue(sout.Length > 0);
                Assert.IsTrue(!sout.Contains("Unknown"));
            }
        }
 public void TestHelpModels()
 {
     foreach (var name in new[] { "Resample" })
     {
         var        bout  = new StringBuilder();
         var        berr  = new StringBuilder();
         ILogWriter stout = new LogWriter(s => bout.Append(s));
         ILogWriter sderr = new LogWriter(s => berr.Append(s));
         using (var env = new DelegateEnvironment(outWriter: stout, errWriter: sderr, verbose: 3))
         {
             var cmd = $"? {name}";
             MamlHelper.MamlScript(cmd, false, env: env);
             var sout = bout.ToString();
             var serr = berr.ToString();
             Assert.IsTrue(!serr.Contains("Can't instantiate"));
             Assert.IsTrue(sout.Length > 0);
             Assert.IsTrue(!sout.Contains("Unknown"));
         }
     }
 }
        public void TestCSGenerator()
        {
            var        methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
            var        basePath   = FileHelper.GetOutputFile("CSharpApiExt.cs", methodName);
            var        cmd        = $"? generator=cs{{csFilename={basePath} exclude=System.CodeDom.dll}}";
            var        bout       = new StringBuilder();
            var        berr       = new StringBuilder();
            ILogWriter stout      = new LogWriter(s => bout.Append(s));
            ILogWriter sderr      = new LogWriter(s => berr.Append(s));

            using (var env = new DelegateEnvironment(outWriter: stout, errWriter: sderr, verbose: 3))
            {
                MamlHelper.MamlScript(cmd, false, env: env);
                var sout = bout.ToString();
                var serr = berr.ToString();
                Assert.IsTrue(sout.Length > 0);
                Assert.IsTrue(serr.Length == 0);
                Assert.IsFalse(sout.ToLower().Contains("usage"));
            }
            var text = File.ReadAllText(basePath);

            Assert.IsTrue(text.ToLower().Contains("nearest"));
        }
Ejemplo n.º 7
0
        public static string MamlScript(string script, bool catch_output,
                                        int conc             = 0, int verbose = 2, int sensitivity = -1,
                                        bool skipFailLoading = false)
        {
            ILogWriter logout, logerr;
            var        stout = new StringBuilder();
            var        sterr = new StringBuilder();

            if (catch_output)
            {
                logout = new LogWriter((string s) =>
                {
                    stout.Append(s);
                });
                logerr = new LogWriter((string s) =>
                {
                    sterr.Append(s);
                });
            }
            else
            {
                logout = new LogWriter((string s) => { Console.Write(s); });
                logerr = new LogWriter((string s) => { Console.Error.Write(s); });
            }

            using (var env = new DelegateEnvironment((int?)null, verbose, (MessageSensitivity)sensitivity, conc, logout, logerr))
            {
                if (skipFailLoading)
                {
                    try
                    {
                        ComponentHelper.AddStandardComponents(env);
                    }
                    catch (Exception e)
                    {
                        sterr.Append($"Unable to load an assembly due to {e.ToString()}.\n");
                    }
                }
                else
                {
                    ComponentHelper.AddStandardComponents(env);
                }

                string res = null;
                try
                {
                    res = MamlHelper.MamlScript(script, false, env);
                    if (!string.IsNullOrEmpty(res))
                    {
                        stout.Append(res);
                    }
                }
                catch (InvalidOperationException e)
                {
                    if (!string.IsNullOrEmpty(res))
                    {
                        sterr.Append(res + "\n");
                    }
                    sterr.Append($"[PyMamlHelper-InvalidOperationException] catch_output={catch_output}\n" + e.ToString() + "\n");
                }
                catch (MamlException e)
                {
                    if (!string.IsNullOrEmpty(res))
                    {
                        sterr.Append(res + "\n");
                    }
                    sterr.Append($"[PyMamlHelper-MamlException] catch_output={catch_output}\n" + e.ToString() + "\n");
                }
                if (sterr.Length > 0)
                {
                    return(string.Format("---OUT---\n{0}\n---ERR---\n{1}", stout.ToString(), sterr.ToString()));
                }
                else
                {
                    return(stout.ToString());
                }
            }
        }