public void Learn(IEnumerable <Expense> expenses) { this.classifier = new MultiClassClassifier <ExpenseSample, string>(); var multiClassOptions = new MultiClassOptions <ExpenseSample>() .WithLabel(i => i.Category) .WithFeatures(i => i.Amount, i => i.CreatedHour, i => i.ExpenseDayOfWeek); var ffOptions = new FastForestOvaOptions() .WithNumberOfTrees(50) .WithLeaves(50) .WithExampleCountPerLeaf(1); this.classifier.TrainFastForestOva(expenses.Select(ExpenseSample.FromExpense), multiClassOptions, ffOptions); }
static void Main(string[] args) { var ml = new MLContext(); var tsvData = ml.Data.LoadFromTextFile <ExpenseInput>(@"C:\Users\Hans\Desktop\Thomas.tsv", hasHeader: true); var rawData = ml.Data.CreateEnumerable <ExpenseInput>(tsvData, true); var data = rawData.Select(SampleInput.FromExpense); var multi = new MultiClassClassifier <SampleInput, string>(); var multiClassOptions = new MultiClassOptions <SampleInput>() .WithLabel(i => i.Category) .WithFeatures(i => i.Amount, i => i.CreatedHour, i => i.ExpenseDayOfWeek); var ffOptions = new FastForestOvaOptions() .WithNumberOfTrees(50) .WithLeaves(50) .WithExampleCountPerLeaf(1); multi.TrainFastForestOva(data, multiClassOptions, ffOptions); multi.DumpEvaluation(data); multi.DumpFeatureImportance(data); //multi.SaveModel(@"C:\\Users\\Hans\\Desktop\\Thomas.model.zip"); while (true) { Console.Write("Hour: "); var hour = int.Parse(Console.ReadLine()); Console.Write("Day: "); var day = int.Parse(Console.ReadLine()); Console.Write("Amount: "); var amount = float.Parse(Console.ReadLine()); var input = new SampleInput { Amount = amount, CreatedHour = hour, ExpenseDayOfWeek = day }; var result = multi.Predict(input); Console.WriteLine(result); Console.WriteLine("----\n\n"); } }