ML - устранение неточностей и багов ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit ML - тесты
56 lines
1.5 KiB
ObjectPascal
56 lines
1.5 KiB
ObjectPascal
// В этом примере SelectKBest оставляет
|
||
// только два самых полезных признака
|
||
// и показывает, как это влияет на качество модели.
|
||
|
||
uses MLABC;
|
||
|
||
begin
|
||
var (X, y) := Datasets.MakeClassification(
|
||
n := 200,
|
||
nFeatures := 6,
|
||
nInformative := 2,
|
||
nRedundant := 0,
|
||
noise := 0.1,
|
||
classSep := 1.2,
|
||
seed := 42
|
||
);
|
||
|
||
var featureNames := ['f1', 'f2', 'f3', 'f4', 'f5', 'f6'];
|
||
|
||
Println('Размер до SelectKBest: ', X.RowCount, 'x', X.ColCount);
|
||
|
||
var skb := new SelectKBest(2, FeatureScore.Correlation);
|
||
skb.Fit(X, y);
|
||
var X2 := skb.Transform(X);
|
||
|
||
Println('Размер после SelectKBest: ', X2.RowCount, 'x', X2.ColCount);
|
||
Println;
|
||
Println('Отобранные признаки:');
|
||
|
||
var selected := skb.SelectedFeatures;
|
||
for var i := 0 to selected.Length - 1 do
|
||
Println(' ', featureNames[selected[i]]);
|
||
|
||
Println;
|
||
|
||
var fullScore := Validation.StratifiedCrossValidate(
|
||
new LogisticRegression(learningRate := 0.05, epochs := 1000),
|
||
X, y,
|
||
5,
|
||
ClassificationMetrics.Accuracy,
|
||
seed := 42
|
||
);
|
||
|
||
var reducedScore := Validation.StratifiedCrossValidate(
|
||
new LogisticRegression(learningRate := 0.05, epochs := 1000),
|
||
X2, y,
|
||
5,
|
||
ClassificationMetrics.Accuracy,
|
||
seed := 42
|
||
);
|
||
|
||
Println('Сравнение качества LogisticRegression:');
|
||
Println($' Все признаки: Accuracy = {fullScore:F3}');
|
||
Println($' После SelectKBest: Accuracy = {reducedScore:F3}');
|
||
end.
|