public void New_TrainWithInitialPredictor() { var dataPath = GetDataPath(SentimentDataPath); using (var env = new TlcEnvironment(seed: 1, conc: 1)) { // Pipeline. var pipeline = new MyTextLoader(env, MakeSentimentTextLoaderArgs()) .Append(new MyTextTransform(env, MakeSentimentTextTransformArgs())); // Train the pipeline, prepare train set. var reader = pipeline.Fit(new MultiFileSource(dataPath)); var trainData = reader.Read(new MultiFileSource(dataPath)); // Train the first predictor. var trainer = new MySdca(env, new LinearClassificationTrainer.Arguments { NumThreads = 1 }, "Features", "Label"); var firstModel = trainer.Fit(trainData); // Train the second predictor on the same data. var secondTrainer = new MyAveragedPerceptron(env, new AveragedPerceptronTrainer.Arguments(), "Features", "Label"); var finalModel = secondTrainer.Train(trainData, firstModel.InnerModel); } }
public void New_ReconfigurablePrediction() { var dataPath = GetDataPath(SentimentDataPath); var testDataPath = GetDataPath(SentimentTestPath); using (var env = new TlcEnvironment(seed: 1, conc: 1)) { var dataReader = new MyTextLoader(env, MakeSentimentTextLoaderArgs()) .Fit(new MultiFileSource(dataPath)); var data = dataReader.Read(new MultiFileSource(dataPath)); var testData = dataReader.Read(new MultiFileSource(testDataPath)); // Pipeline. var pipeline = new MyTextTransform(env, MakeSentimentTextTransformArgs()) .Fit(data); var trainer = new MySdca(env, new LinearClassificationTrainer.Arguments { NumThreads = 1 }, "Features", "Label"); var trainData = pipeline.Transform(data); var model = trainer.Fit(trainData); var scoredTest = model.Transform(pipeline.Transform(testData)); var metrics = new MyBinaryClassifierEvaluator(env, new BinaryClassifierEvaluator.Arguments()).Evaluate(scoredTest, "Label", "Probability"); var newModel = model.Clone(new BinaryClassifierScorer.Arguments { Threshold = 0.01f, ThresholdColumn = DefaultColumnNames.Probability }); var newScoredTest = newModel.Transform(pipeline.Transform(testData)); var newMetrics = new MyBinaryClassifierEvaluator(env, new BinaryClassifierEvaluator.Arguments { Threshold = 0.01f, UseRawScoreThreshold = false }).Evaluate(newScoredTest, "Label", "Probability"); } }