38 lines
1.2 KiB
ObjectPascal
38 lines
1.2 KiB
ObjectPascal
|
|
// В этом примере сравниваются границы решений
|
|||
|
|
// дерева решений и случайного леса.
|
|||
|
|
|
|||
|
|
uses MLABC, PlotML;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
var (X, y) := Datasets.MakeCircles(
|
|||
|
|
n := 300,
|
|||
|
|
noise := 0.3,
|
|||
|
|
factor := 0.5,
|
|||
|
|
flipProb := 0.08,
|
|||
|
|
scale := 3.0,
|
|||
|
|
seed := 42
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
var tree := new DecisionTreeClassifier(maxDepth := 6, minSamplesSplit := 6, minSamplesLeaf := 3, seed := 42);
|
|||
|
|
tree.Fit(X, y);
|
|||
|
|
var accTree := ClassificationMetrics.Accuracy(y, tree.Predict(X));
|
|||
|
|
|
|||
|
|
var forest := new RandomForestClassifier(nTrees := 100, maxDepth := 6, minSamplesSplit := 6, minSamplesLeaf := 3, seed := 42);
|
|||
|
|
forest.Fit(X, y);
|
|||
|
|
var accForest := ClassificationMetrics.Accuracy(y, forest.Predict(X));
|
|||
|
|
|
|||
|
|
var x1 := X.Col(0);
|
|||
|
|
var x2 := X.Col(1);
|
|||
|
|
var labels := LabelsToInts(y);
|
|||
|
|
|
|||
|
|
var fig := Plot.Grid(1, 2);
|
|||
|
|
|
|||
|
|
fig[0,0].Surface(x1, x2, 80, 80, G -> tree.PredictLabels(G), Palettes.Pastel);
|
|||
|
|
fig[0,0].Points(x1, x2, labels, size := 6);
|
|||
|
|
fig[0,0].Title := $'DecisionTree (Acc = {accTree:F3})';
|
|||
|
|
|
|||
|
|
fig[0,1].Surface(x1, x2, 80, 80, G -> forest.PredictLabels(G), Palettes.Pastel);
|
|||
|
|
fig[0,1].Points(x1, x2, labels, size := 6);
|
|||
|
|
fig[0,1].Title := $'RandomForest (Acc = {accForest:F3})';
|
|||
|
|
end.
|