ML - устранение неточностей и багов ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit ML - тесты
45 lines
1.5 KiB
ObjectPascal
45 lines
1.5 KiB
ObjectPascal
// В этом примере подбирается параметр eps для DBSCAN.
|
||
//
|
||
// eps задаёт радиус окрестности точки.
|
||
// Если eps слишком мал, алгоритм считает много точек шумом.
|
||
// Если eps слишком велик, разные группы могут слиться в один кластер.
|
||
|
||
uses MLABC;
|
||
|
||
begin
|
||
var (X, yTrue) := Datasets.MakeMoons(
|
||
n := 400,
|
||
noise := 0.08,
|
||
shuffle := True,
|
||
seed := 1
|
||
);
|
||
|
||
Println('Подбор параметра eps для DBSCAN');
|
||
Println;
|
||
Println('eps кластеры шум ARI');
|
||
Println('-' * 34);
|
||
|
||
foreach var eps in [0.10, 0.14, 0.18, 0.22, 0.26, 0.30] do
|
||
begin
|
||
var model := new DBSCAN(eps, 5);
|
||
model.Fit(X);
|
||
|
||
var labels := model.PredictLabels(X);
|
||
|
||
var noiseCount := 0;
|
||
foreach var clusterLabel in labels do
|
||
if clusterLabel = -1 then
|
||
noiseCount += 1;
|
||
|
||
var ari := ClusteringMetrics.AdjustedRandIndex(yTrue, labels);
|
||
|
||
Println($'{eps,4:F2} {model.ClustersCount,10} {noiseCount,6} {ari,8:F3}');
|
||
end;
|
||
|
||
Println;
|
||
Println('Интерпретация результата:');
|
||
Println('- При слишком маленьком eps шумовых точек становится слишком много.');
|
||
Println('- При слишком большом eps разные группы могут сливаться.');
|
||
Println('- Хороший eps даёт разумное число кластеров и высокое значение ARI.');
|
||
end.
|