public void ArbitraryPrediction_Test_With_Named_Iterator() { var data = ArbitraryPrediction.GetDataUsingNamedIterator(); var description = Descriptor.Create<ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction minimumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 10.0m, ThirdTestFeature = 1.2m }; ArbitraryPrediction maximumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 57.0m, ThirdTestFeature = 1.2m }; var expectedMinimum = model.Predict<ArbitraryPrediction>(minimumPredictionValue).OutcomeLabel; var expectedMaximum = model.Predict<ArbitraryPrediction>(maximumPredictionValue).OutcomeLabel; Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Minimum, expectedMinimum); Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedMaximum); }
static void Main(string[] args) { var descriptor = Descriptor.For <Tennis>() .With(t => t.Outlook) .With(t => t.Temperature) .With(t => t.Windy) .With(t => t.Humidity) .Learn(t => t.Play); Console.WriteLine(descriptor); var generator = new DecisionTreeGenerator(descriptor); var model = generator.Generate(Tennis.GetData()); Console.WriteLine($"Model:\n{model}"); var tn = new Tennis { Outlook = Outlook.Sunny, Temperature = Temperature.Cool, Humidity = Humidity.High, Windy = true }; var tennis = model.PredictValue(tn); Console.WriteLine($"Play? {tennis}"); Console.ReadKey(); }
public void Decision_Tree_Study_Category_Test() { var categoryA = Guid.NewGuid(); var categoryB = Guid.NewGuid(); var data = new[] { new { Study = 2.0, Category = categoryA, Passed = false }, new { Study = 3.0, Category = categoryA, Passed = false }, new { Study = 1.0, Category = categoryB, Passed = false }, new { Study = 4.0, Category = categoryA, Passed = false }, new { Study = 6.0, Category = categoryA, Passed = true }, new { Study = 8.0, Category = categoryB, Passed = true }, new { Study = 12.0, Category = categoryA, Passed = true }, new { Study = 3.0, Category = categoryB, Passed = true } }; var descriptor = Descriptor.New("Student") .With("Study").As(typeof(double)) .With("Category").AsGuid() .Learn("Passed").As(typeof(bool)); DecisionTreeGenerator generator = new DecisionTreeGenerator() { Descriptor = descriptor, NormalizeFeatures = true }; var model = Learner.Learn(data, 0.8, 10, generator).Model; var test = model.PredictValue(new { Study = 7.0, Category = categoryA, Passed = false }); Assert.Equal(true, test); }
public void ArbitraryPrediction_Test_With_Enum_Label() { var data = ArbitraryPrediction.GetData(); var description = Descriptor.Create <ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction minimumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 10.0m, ThirdTestFeature = 1.2m }; ArbitraryPrediction maximumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 55.0m, ThirdTestFeature = 1.2m }; var expectedMinimum = model.Predict <ArbitraryPrediction>(minimumPredictionValue).OutcomeLabel; var expectedMaximum = model.Predict <ArbitraryPrediction>(maximumPredictionValue).OutcomeLabel; //The value should be minimum, however, maximum is returned Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Minimum, expectedMinimum); //Maximum is returned as expected Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedMaximum); }
public void ArbitraryPrediction_Test_With_Enum_Label() { var data = ArbitraryPrediction.GetData(); var description = Descriptor.Create<ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction minimumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 10.0m, ThirdTestFeature = 1.2m }; ArbitraryPrediction maximumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 55.0m, ThirdTestFeature = 1.2m }; var expectedMinimum = model.Predict<ArbitraryPrediction>(minimumPredictionValue).OutcomeLabel; var expectedMaximum = model.Predict<ArbitraryPrediction>(maximumPredictionValue).OutcomeLabel; //The value should be minimum, however, maximum is returned Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Minimum, expectedMinimum); //Maximum is returned as expected Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedMaximum); }
public void ArbitraryPrediction_Test_With_Named_Iterator() { var data = ArbitraryPrediction.GetDataUsingNamedIterator(); var description = Descriptor.Create <ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction minimumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 10.0m, ThirdTestFeature = 1.2m }; ArbitraryPrediction maximumPredictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, SecondTestFeature = 57.0m, ThirdTestFeature = 1.2m }; var expectedMinimum = model.Predict <ArbitraryPrediction>(minimumPredictionValue).OutcomeLabel; var expectedMaximum = model.Predict <ArbitraryPrediction>(maximumPredictionValue).OutcomeLabel; Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Minimum, expectedMinimum); Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedMaximum); }
public void Train(IEnumerable <Game> games) { _description = Descriptor.Create <Record>(); var generator = new DecisionTreeGenerator(); var data = games.Select(z => new Record(z)); _model = generator.Generate(_description, data); }
public static void Main(string[] args) { // Step 1: Data Console.WriteLine("Step 1: Data"); Tennis[] tennis = Tennis.GetData(); var descriptor = Descriptor.Create <Tennis>(); // Step 2: Maths Console.WriteLine("\nStep 2: Maths"); var data = descriptor.ToExamples(tennis); var x = data.Item1; var y = data.Item2; Console.WriteLine($"Mathematical feature representation:{x}"); Console.WriteLine($"\nMathematical label representation:{y.T}"); // Step 3: Generate Model Console.WriteLine("\nStep 3: Generate Model"); var generator = new DecisionTreeGenerator(); var model = generator.Generate <Tennis>(descriptor, tennis); Console.WriteLine(model); // Step 4: Prediction Console.WriteLine("\nStep 4: Prediction"); Tennis t = new Tennis { Outlook = Outlook.Sunny, Temperature = Temperature.Hot, Windy = false }; Tennis p = model.Predict(t); Console.WriteLine($"Play: {p.Play}"); // Step 5: Testing Accuracy Console.WriteLine("\nStep 5: Testing Accuracy"); ((DecisionTreeGenerator)generator).SetHint(0); var learned = Learner.Learn(tennis, 0.80, 100, generator); var m = learned.Model; double accuracy = learned.Accuracy; Console.WriteLine($"Learned {m.GetType().Name} model with {accuracy*100}% accuracy"); Console.WriteLine(m); Tennis h = new Tennis { Outlook = Outlook.Sunny, Temperature = Temperature.Hot, Windy = false }; Tennis o = m.Predict(h); Console.WriteLine($"Play: {o.Play}"); }
async Task GenericTree() { var data = BombDecisionTree.GetData(); var d = Descriptor.Create <BombDecisionTree>(); var g = new DecisionTreeGenerator(d); g.SetHint(false); _model = Learner.Learn(data, 0.80, 10000, g); }
public void Save_And_Load_Iris_DT() { var data = Iris.Load(); var description = Descriptor.Create<Iris>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data) as DecisionTreeModel; Serialize(model); var lmodel = Deserialize<DecisionTreeModel>(); Assert.AreEqual(model.Hint, lmodel.Hint); AreEqual(model.Tree, lmodel.Tree, false); }
static void Main(string[] args) { Tennis[] data = Tennis.GetData(); var d = Descriptor.Create <Tennis>(); var g = new DecisionTreeGenerator(d); g.SetHint(false); var model = Learner.Learn(data, 0.8, 1000, g); Console.WriteLine(model); Console.ReadKey(); }
public double LearnFromData(int iterations) { var d = Descriptor.Create <ScreenData>(); var g = new DecisionTreeGenerator(d); g.SetHint(false); var mdl = Learner.Learn(data, 0.80, iterations, g); model = (DecisionTreeModel)mdl.Model; return(mdl.Accuracy); }
static void NumlTest() { Console.WriteLine("Hello World!"); var description = Descriptor.Create <Iris>(); Console.WriteLine(description); var generator = new DecisionTreeGenerator(); var data = Iris.Load(); var model = generator.Generate(description, data); Console.WriteLine("Generated model:"); Console.WriteLine(model); }
public void Save_And_Load_Iris_DT() { var data = Iris.Load(); var description = Descriptor.Create <Iris>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data) as DecisionTreeModel; Serialize(model); var lmodel = Deserialize <DecisionTreeModel>(); Assert.AreEqual(model.Hint, lmodel.Hint); AreEqual(model.Tree, lmodel.Tree, false); }
public void Save_And_Load_HouseDT() { var data = House.GetData(); var description = Descriptor.Create<House>(); var generator = new DecisionTreeGenerator { Depth = 50 }; var model = generator.Generate(description, data) as DecisionTreeModel; Serialize(model); var lmodel = Deserialize<DecisionTreeModel>(); Assert.AreEqual(model.Hint, lmodel.Hint); AreEqual(model.Tree, lmodel.Tree, false); }
public override void CreateClassifier() { // this.Normalizator = new Normalizator.Normalizator(this.Stats); // this.Stats = this.Normalizator.Normalize(this.Stats); var testSet = this.Stats; var descriptor = Descriptor.Create <FeatureVector>(); var decisionTreeModel = new DecisionTreeGenerator(descriptor.VectorLength, 2, descriptor, null, 0.0); // decisionTreeModel.SetHint(false); decisionTreeModel.Generate((IEnumerable <object>)testSet); var learnDecisionTree = Learner.Learn(testSet, 0.90, 100, decisionTreeModel); this.ClassifierModel = learnDecisionTree.Model; }
private void Basla(string AnaIlanSayfasi, int okunacakIlanSayisi, int offset) { try { int sayfaSayisi = okunacakIlanSayisi / 50; bool bit = false; int i = 0; int eskiOffset; while (!bit && i < sayfaSayisi) { eskiOffset = offset; List <string> linkler = IlanlariAl(AnaIlanSayfasi.Replace("pagingOffset=" + eskiOffset, "pagingOffset=" + offset).ToString()); offset += 50;; for (int j = 0; j < linkler.Count; j++) { lblSite.Text = linkler[j]; Application.DoEvents(); OtomobilEkle(linkler[j]); Thread.Sleep(500); if (Otomobiller.Count >= okunacakIlanSayisi) { bit = true; } } i++; } if (cbSerialize.Checked && Otomobiller.Count > 1) { SerializeEt(); lblSite.Text = "Serialize edildi"; } var d = Descriptor.Create <Otomobil>(); var g = new DecisionTreeGenerator(d); g.SetHint(true); var model = Learner.Learn(Otomobiller, 0.80, 1000, g); lblSite.ForeColor = Color.Green; lblSite.Text = Otomobiller.Count + " adet otomobil için Model çıkarıldı."; } catch (Exception e) { lblSite.ForeColor = Color.Red; lblSite.Text = "Veriler alınamadı!"; } }
public void Save_And_Load_Iris_DT_Json() { var data = Iris.Load(); var description = Descriptor.Create <Iris>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data) as DecisionTreeModel; var file = GetPath(); Register.Type <Iris>(); var lmodel = SaveAndLoadJson(model); Assert.Equal(model.Descriptor, lmodel.Descriptor); Assert.Equal(model.Hint, lmodel.Hint); Assert.Equal(model.Tree, lmodel.Tree); }
public void Save_And_Load_HouseDT() { var data = House.GetData(); var description = Descriptor.Create <House>(); var generator = new DecisionTreeGenerator { Depth = 50 }; var model = generator.Generate(description, data) as DecisionTreeModel; Serialize(model); var lmodel = Deserialize <DecisionTreeModel>(); Assert.Equal(model.Descriptor, lmodel.Descriptor); Assert.Equal(model.Hint, lmodel.Hint); Assert.Equal(model.Tree, lmodel.Tree); }
public void Tennis_DT_and_Prediction() { var data = Tennis.GetData(); var description = Descriptor.Create <Tennis>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); Tennis t = new Tennis { Humidity = Humidity.Normal, Outlook = Outlook.Overcast, Temperature = Temperature.Cool, Windy = true }; model.Predict <Tennis>(t); Assert.IsTrue(t.Play); }
public void ArbitraryPrediction_Test_With_Feature_Value_Greater_Than_Trained_Instances() { var data = ArbitraryPrediction.GetData(); var description = Descriptor.Create<ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction predictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, //This value is greater than any of the trained instances SecondTestFeature = 106.0m, ThirdTestFeature = 1.2m }; var expectedValue = model.Predict<ArbitraryPrediction>(predictionValue).OutcomeLabel; Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedValue); }
public void ValueObject_Test_With_Yield_Enumerator() { var data = ValueObject.GetData(); var generator = new DecisionTreeGenerator() { Descriptor = Descriptor.Create <ValueObject>() }; var model = generator.Generate(data); var s = model.ToString(); var o = new ValueObject() { V1 = 1, V2 = 60 }; var os = model.Predict <ValueObject>(o).R; Assert.AreEqual("l".Sanitize(), os); }
public void Iris_DT_and_Prediction() { var data = Iris.Load(); var description = Descriptor.Create <Iris>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); // should be Iris-Setosa Iris iris = new Iris { PetalWidth = 0.5m, PetalLength = 2.3m, SepalLength = 2.1m, SepalWidth = 2.1m }; iris = model.Predict <Iris>(iris); Assert.AreEqual("Iris-setosa".Sanitize(), iris.Class); }
public void ArbitraryPrediction_Test_With_Feature_Value_Greater_Than_Trained_Instances() { var data = ArbitraryPrediction.GetData(); var description = Descriptor.Create <ArbitraryPrediction>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); ArbitraryPrediction predictionValue = new ArbitraryPrediction { FirstTestFeature = 1.0m, //This value is greater than any of the trained instances SecondTestFeature = 106.0m, ThirdTestFeature = 1.2m }; var expectedValue = model.Predict <ArbitraryPrediction>(predictionValue).OutcomeLabel; Assert.AreEqual(ArbitraryPrediction.PredictionLabel.Maximum, expectedValue); }
public void Save_And_Load_HouseDT_Json() { var data = House.GetData(); var description = Descriptor.Create <House>(); var generator = new DecisionTreeGenerator { Depth = 50 }; var model = generator.Generate(description, data) as DecisionTreeModel; var file = GetPath(); Register.Type <House>(); var lmodel = SaveAndLoadJson(model); Assert.Equal(model.Descriptor, lmodel.Descriptor); Assert.Equal(model.Hint, lmodel.Hint); Assert.Equal(model.Tree, lmodel.Tree); }
public void House_DT_and_Prediction() { var data = House.GetData(); var description = Descriptor.Create <House>(); var generator = new DecisionTreeGenerator { Depth = 50 }; var model = generator.Generate(description, data); House h = new House { District = District.Rural, HouseType = HouseType.Detached, Income = Income.High, PreviousCustomer = false }; var prediction = model.Predict(h); Assert.IsTrue(prediction.Response); }
public static void Main(string[] args) { Console.WriteLine("Iris Machine Learning Example"); // our data var data = Iris.Load(); // descriptor var description = Descriptor.Create <Iris>(); Console.WriteLine(description); // generator makes model var generator = new DecisionTreeGenerator(); var model = generator.Generate(description, data); Console.WriteLine("Generated model:"); Console.WriteLine(model); // use model // model.Predict(...) }
public static void Go() { // Start with our data Tennis[] data = SampleData.GetTennisData(); // Create the corresponding descriptor var descriptor = Descriptor.Create <Tennis>(); // Choose our generator var generator = new DecisionTreeGenerator(descriptor); generator.SetHint(false); Console.WriteLine($"Using the {generator.GetType().Name}\n"); // Create the model by learning from the data using the generator LearningModel learningModel = Learner.Learn(data, 0.80, 1000, generator); Console.WriteLine(learningModel); // Now we could predict using the learning info's Model. var toPredict = new Tennis() { Outlook = Outlook.Rainy, Temperature = Temperature.Low, Windy = true, // Play = ? - This is what we will predict }; var prediction = learningModel.Model.Predict(toPredict); // And we're spent... Console.WriteLine($"ToPredict: {toPredict}"); Console.WriteLine($"Prediction: Play = {prediction.Play}\n"); Console.WriteLine("Press any key...\n"); Console.ReadKey(); }
/// <summary> /// Do the <c>SimpleNumlWorkflow</c> using a <c>DecisionTree</c> generator/model. /// </summary> /// <param name="simpleData">If true, uses a preset small sample data set; else generates a larger, pseudo-random one.</param> /// <param name="depth"></param> /// <param name="width"></param> static void DoSimple_DecisionTree(bool simpleData = true, int depth = 5, int width = 2) { SimpleNumlWorkflowImpl( getData: () => SampleData.GetTennisData(simpleData), getDescriptor: () => Descriptor.Create <Tennis>(), getGenerator: (descriptor) => { var generator = new DecisionTreeGenerator(descriptor) { Depth = depth, Width = width }; generator.SetHint(false); return(generator); }, getToPredict: () => { return(new Tennis() { Outlook = Outlook.Rainy, Temperature = Temperature.Low, Windy = true }); }, getPredictionDesc: (t) => "Play: " + t.Play, trainingPercentage: 0.8d, repeat: 1000 ); }
public void Iris_DT_and_Prediction_with_Learner() { var data = Iris.Load(); var generator = new DecisionTreeGenerator(50) { Descriptor = Descriptor.Create <Iris>(), Hint = 0 }; var lmodel = Learner.Learn(data, .80, 1000, generator); // should be Iris-Setosa Iris iris = new Iris { PetalWidth = 0.5m, PetalLength = 2.3m, SepalLength = 2.1m, SepalWidth = 2.1m }; iris = lmodel.Model.Predict <Iris>(iris); Assert.AreEqual("Iris-setosa".Sanitize(), iris.Class); }
public void ValueObject_Test_With_Yield_Enumerator() { var data = ValueObject.GetData(); var generator = new DecisionTreeGenerator() { Descriptor = Descriptor.Create<ValueObject>() }; var model = generator.Generate(data); var s = model.ToString(); var o = new ValueObject() { V1 = 1, V2 = 60 }; var os = model.Predict<ValueObject>(o).R; Assert.AreEqual("l".Sanitize(), os); }
public void Iris_DT_and_Prediction_with_Learner() { var data = Iris.Load(); var generator = new DecisionTreeGenerator(50) { Descriptor = Descriptor.Create<Iris>(), Hint = 0 }; var lmodel = Learner.Learn(data, .80, 1000, generator); // should be Iris-Setosa Iris iris = new Iris { PetalWidth = 0.5m, PetalLength = 2.3m, SepalLength = 2.1m, SepalWidth = 2.1m }; iris = lmodel.Model.Predict<Iris>(iris); Assert.AreEqual("Iris-setosa".Sanitize(), iris.Class); }
private void btnOgren_Click(object sender, EventArgs e) { try { GuvenlikOzellikleri go = GuvenlikOzellikleri.YOK; IcDonanim id = IcDonanim.YOK; if (cbAbs.Checked) { go = go | GuvenlikOzellikleri.Seviye1; } else if (cbAsr.Checked) { go = go | GuvenlikOzellikleri.Seviye2; } else if (cbEsp.Checked) { go = go | GuvenlikOzellikleri.Seviye3; } else if (cbKumasKoltuk.Checked) { id = id | IcDonanim.Seviye1; } else if (cbKlima.Checked) { id = id | IcDonanim.Seviye2; } else if (cbDeriKoltuk.Checked) { id = id | IcDonanim.Seviye3; } else if (cbYolBilgsayarı.Checked) { id = id | IcDonanim.Seviye4; } Otomobiller.Add(new Otomobil(int.Parse(txtFiyat.Text), int.Parse(txtYıl.Text), int.Parse(txtKm.Text), cbOtomatik.Checked ? Vites.Otomatik : Vites.Manuel, cbDizel.Checked ? Yakit.Dizel : Yakit.Benzin, int.Parse(txtMotorHacmi.Text), int.Parse(txtMotorGucu.Text), cbGaranti.Checked, cbTakas.Checked, cbSıfır.Checked ? Durum.Sıfır : Durum.IkinciEl, go, id, int.Parse(txtBoyalıSayısı.Text), int.Parse(txtDegisenSayısı.Text), cbAlınır.Checked)); if (Otomobiller.Count < 2) { MessageBox.Show("Öğrenme Yapılabilmesi için en az 2 kayıt olması gerek"); lblDurum.ForeColor = Color.Green; lblDurum.Text = "Kayıt eklendi."; return; } var d = Descriptor.Create <Otomobil>(); var g = new DecisionTreeGenerator(d); g.SetHint(true); Model = Learner.Learn(Otomobiller, 0.80, 1000, g); lblDurum.ForeColor = Color.Green; lblDurum.Text = "Öğrenme Yapıldı : Doğruluk:" + Model.Accuracy; btnOgren.Enabled = false; linkLabel1.Visible = true; } catch (Exception) { lblDurum.ForeColor = Color.DarkRed; lblDurum.Text = "Otomobil eklenemedi."; linkLabel1.Visible = false; } }
public void House_DT_and_Prediction() { var data = House.GetData(); var description = Descriptor.Create<House>(); var generator = new DecisionTreeGenerator { Depth = 50 }; var model = generator.Generate(description, data); House h = new House { District = District.Rural, HouseType = HouseType.Detached, Income = Income.High, PreviousCustomer = false }; var prediction = model.Predict(h); Assert.IsTrue(prediction.Response); }
public void Tennis_DT_and_Prediction() { var data = Tennis.GetData(); var description = Descriptor.Create<Tennis>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); Tennis t = new Tennis { Humidity = Humidity.Normal, Outlook = Outlook.Overcast, Temperature = Temperature.Cool, Windy = true }; model.Predict<Tennis>(t); Assert.IsTrue(t.Play); }
public void Iris_DT_and_Prediction() { var data = Iris.Load(); var description = Descriptor.Create<Iris>(); var generator = new DecisionTreeGenerator(50); var model = generator.Generate(description, data); // should be Iris-Setosa Iris iris = new Iris { PetalWidth = 0.5m, PetalLength = 2.3m, SepalLength = 2.1m, SepalWidth = 2.1m }; iris = model.Predict<Iris>(iris); Assert.AreEqual("Iris-setosa".Sanitize(), iris.Class); }