ML - устранение неточностей и багов ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit ML - тесты
56 lines
1.5 KiB
ObjectPascal
56 lines
1.5 KiB
ObjectPascal
// В этом примере сравниваются несколько моделей
|
||
// на одной задаче регрессии.
|
||
|
||
uses MLABC;
|
||
|
||
begin
|
||
var (X, y) := Datasets.MakeRegression(
|
||
n := 400,
|
||
nFeatures := 8,
|
||
nInformative := 3,
|
||
noise := 0.35,
|
||
nonlinearStrength := 1.5,
|
||
seed := 42
|
||
);
|
||
|
||
Println('Сравнение моделей регрессии по кросс-валидации');
|
||
Println;
|
||
|
||
var linScore := Validation.CrossValidate(
|
||
new LinearRegression,
|
||
X, y,
|
||
5,
|
||
RegressionMetrics.R2,
|
||
seed := 42
|
||
);
|
||
|
||
var treeScore := Validation.CrossValidate(
|
||
new DecisionTreeRegressor(maxDepth := 6, minSamplesSplit := 10, minSamplesLeaf := 5, seed := 42),
|
||
X, y,
|
||
5,
|
||
RegressionMetrics.R2,
|
||
seed := 42
|
||
);
|
||
|
||
var forestScore := Validation.CrossValidate(
|
||
new RandomForestRegressor(nTrees := 120, maxDepth := 8, minSamplesSplit := 10, minSamplesLeaf := 5, seed := 42),
|
||
X, y,
|
||
5,
|
||
RegressionMetrics.R2,
|
||
seed := 42
|
||
);
|
||
|
||
var gbScore := Validation.CrossValidate(
|
||
new GradientBoostingRegressor(nEstimators := 100, learningRate := 0.1, maxDepth := 3, minSamplesSplit := 10, minSamplesLeaf := 5, seed := 42),
|
||
X, y,
|
||
5,
|
||
RegressionMetrics.R2,
|
||
seed := 42
|
||
);
|
||
|
||
Println($'LinearRegression: R² = {linScore:F3}');
|
||
Println($'DecisionTreeRegressor: R² = {treeScore:F3}');
|
||
Println($'RandomForestRegressor: R² = {forestScore:F3}');
|
||
Println($'GradientBoostingRegressor: R² = {gbScore:F3}');
|
||
end.
|