diff --git a/InstallerSamples/MachineLearning/08_Datasets/06_LoadIris.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/06_LoadIris.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/06_LoadIris.pas rename to InstallerSamples/MachineLearning/08_Datasets/Iris/06_LoadIris.pas diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris.pas new file mode 100644 index 000000000..4312c0aa3 --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris.pas @@ -0,0 +1,28 @@ +uses MLABC, PlotML; + +begin + var ds := Datasets.Iris; + + var (X, labels) := ds.ToXYInt; + + var names := ds.Features; + var n := names.Length; + + var fig := Plot.Grid(n, n); + + for var i := 0 to n-1 do + for var j := 0 to n-1 do + begin + var ax := fig[i,j]; + + ax.Points(X.Col(j), X.Col(i), labels, size := 3); + + {if i = n-1 then + ax.XLabel(names[j]); + + if j = 0 then + ax.YLabel(names[i]);} + end; + + Plot.Title('Iris: пары признаков'); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris1.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris1.pas new file mode 100644 index 000000000..cce89fdc9 --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/07_ScatterMatrixIris1.pas @@ -0,0 +1,11 @@ +uses MLABC, PlotML; + +begin + var ds := Datasets.Iris; + + var (X, labels) := ds.ToXYInt; + + Plot.PairPlot(X.Data, labels, ds.Features); + + Plot.Title('Iris: пары признаков'); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_Logistic.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_Logistic.pas new file mode 100644 index 000000000..b7d5d396e --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_Logistic.pas @@ -0,0 +1,17 @@ +uses MLABC; + +begin + var ds := Datasets.Iris; + + var (X, y) := ds.ToXY; + + var model := new LogisticRegression; + + model.Fit(X, y); + + var pred := model.Predict(X); + + var acc := Metrics.Accuracy(y, pred); + + Println('Accuracy:', acc:0:3); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_RandomForest.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_RandomForest.pas new file mode 100644 index 000000000..446ca2855 --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_RandomForest.pas @@ -0,0 +1,20 @@ +uses MLABC; + +begin + var ds := Datasets.Iris; + + var (X, y) := ds.ToXY; + + //var model := new LogisticRegression; + //var model := new RandomForestClassifier(); + //var model := new DecisionTreeClassifier(); + var model := new GradientBoostingClassifier(); + + model.Fit(X, y); + + var pred := model.Predict(X); + + var acc := Metrics.Accuracy(y, pred); + + Println('Accuracy:', acc:0:3); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest.pas new file mode 100644 index 000000000..916380896 --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest.pas @@ -0,0 +1,26 @@ +uses MLABC; + + //var model := new LogisticRegression; + //var model := new RandomForestClassifier(); + //var model := new DecisionTreeClassifier(); + //var model := new GradientBoostingClassifier(); + + +begin + var ds := Datasets.Iris; + + var (X, y) := ds.ToXY; + + var (Xtrain, Xtest, ytrain, ytest) := + Validation.TrainTestSplit(X, y, 0.2); + + var model := new GradientBoostingClassifier(seed := -1); + + model.Fit(Xtrain, ytrain); + + var pred := model.Predict(Xtest); + + var acc := Metrics.Accuracy(ytest, pred); + + Println('Accuracy:', acc:0:3); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest1.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest1.pas new file mode 100644 index 000000000..a154e3866 --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest1.pas @@ -0,0 +1,26 @@ +uses MLABC; + + //var model := new LogisticRegression; + //var model := new RandomForestClassifier(); + //var model := new DecisionTreeClassifier(); + //var model := new GradientBoostingClassifier(); + + +begin + var ds := Datasets.Iris; + + var (train, test) := ds.TrainTestSplit; + + var (Xtrain, ytrain) := train.ToXY; + var (Xtest, ytest) := test.ToXY; + + var model := new RandomForestClassifier(seed := -1); + + model.Fit(Xtrain, ytrain); + + var pred := model.Predict(Xtest); + + var acc := Metrics.Accuracy(ytest, pred); + + Println('Accuracy:', acc:0:3); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest2.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest2.pas new file mode 100644 index 000000000..d2dceab6a --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_TrainTest2.pas @@ -0,0 +1,22 @@ +uses MLABC; + + //new LogisticRegression(); + //new RandomForestClassifier(); + //new DecisionTreeClassifier(); + //new GradientBoostingClassifier(); +begin + var ds := Datasets.Iris; + + var (X, y) := ds.ToXY; + + var acc := + Validation.StratifiedCrossValidate( + new RandomForestClassifier(), + X, + y, + 5, + Metrics.Accuracy, + 42); + + Println('CV accuracy:', acc:0:3); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_info.pas b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_info.pas new file mode 100644 index 000000000..115d4b6dc --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/Iris/08_Iris_info.pas @@ -0,0 +1,21 @@ +uses MLABC; + +begin + // Откомментируйте - всё станет по-английски + //Datasets.Language := 'en'; + + var ds := Datasets.Iris; + ds.Info; + Println; + + ds.Classes.Println; + Println; + + ds.ClassCounts.PrintLines; + Println; + + ds.Classes.PrintLines(c -> ds.ClassName(c)); + Println; + + ds.ClassCounts.PrintLines(kv -> ds.ClassName(kv.Key) + ' → ' + kv.Value); +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/MoscowHousing/10_MoscowHousing_Info.pas b/InstallerSamples/MachineLearning/08_Datasets/MoscowHousing/10_MoscowHousing_Info.pas new file mode 100644 index 000000000..ee192773b --- /dev/null +++ b/InstallerSamples/MachineLearning/08_Datasets/MoscowHousing/10_MoscowHousing_Info.pas @@ -0,0 +1,14 @@ +uses MLABC; + +begin + Datasets.Language := 'ru'; + + var ds := Datasets.MoscowHousing; + ds.Info; + + Println; + Println('Первые строки:'); + ds.Head.Println(1); + + ds.Data.Schema.Print +end. \ No newline at end of file diff --git a/InstallerSamples/MachineLearning/08_Datasets/01_MakeBlobs.pas b/InstallerSamples/MachineLearning/08_Datasets/_Synthetic/01_MakeBlobs.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/01_MakeBlobs.pas rename to InstallerSamples/MachineLearning/08_Datasets/_Synthetic/01_MakeBlobs.pas diff --git a/InstallerSamples/MachineLearning/08_Datasets/02_MakeMoons.pas b/InstallerSamples/MachineLearning/08_Datasets/_Synthetic/02_MakeMoons.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/02_MakeMoons.pas rename to InstallerSamples/MachineLearning/08_Datasets/_Synthetic/02_MakeMoons.pas diff --git a/InstallerSamples/MachineLearning/08_Datasets/03_MakeRegression.pas b/InstallerSamples/MachineLearning/08_Datasets/_Synthetic/03_MakeRegression.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/03_MakeRegression.pas rename to InstallerSamples/MachineLearning/08_Datasets/_Synthetic/03_MakeRegression.pas diff --git a/InstallerSamples/MachineLearning/08_Datasets/04_MakeCircles.pas b/InstallerSamples/MachineLearning/08_Datasets/_Synthetic/04_MakeCircles.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/04_MakeCircles.pas rename to InstallerSamples/MachineLearning/08_Datasets/_Synthetic/04_MakeCircles.pas diff --git a/InstallerSamples/MachineLearning/08_Datasets/05_MakeSpiral.pas b/InstallerSamples/MachineLearning/08_Datasets/_Synthetic/05_MakeSpiral.pas similarity index 100% rename from InstallerSamples/MachineLearning/08_Datasets/05_MakeSpiral.pas rename to InstallerSamples/MachineLearning/08_Datasets/_Synthetic/05_MakeSpiral.pas