ML - устранение неточностей и багов ML - оптимизация производительности DecisionTreeRegressor.Fit, RandomForestRegressor.Fit ML - тесты
38 lines
1.3 KiB
ObjectPascal
38 lines
1.3 KiB
ObjectPascal
// Метрики помогают сравнить разные варианты кластеризации.
|
||
//
|
||
// В этом примере данные естественно делятся на 3 группы.
|
||
// Мы сравниваем несколько значений k для KMeans и смотрим,
|
||
// как меняются ARI, Silhouette, Calinski-Harabasz и Davies-Bouldin.
|
||
|
||
uses MLABC;
|
||
|
||
begin
|
||
var (X, yTrue) := Datasets.MakeBlobs(
|
||
n := 300,
|
||
centers := 3,
|
||
nFeatures := 2,
|
||
clusterStd := 0.8,
|
||
centerBox := 6.0,
|
||
shuffle := True,
|
||
seed := 42
|
||
);
|
||
|
||
Println('Сравнение вариантов кластеризации');
|
||
Println;
|
||
Println('k ARI Silhouette Calinski-Harabasz Davies-Bouldin');
|
||
Println('----------------------------------------------------------------');
|
||
|
||
foreach var k in [2, 3, 4, 5] do
|
||
begin
|
||
var model := new KMeans(k, seed := 42);
|
||
var labels := model.FitPredict(X);
|
||
|
||
var ari := ClusteringMetrics.AdjustedRandIndex(yTrue, labels);
|
||
var sil := ClusteringMetrics.SilhouetteScore(X, labels);
|
||
var ch := ClusteringMetrics.CalinskiHarabaszScore(X, labels);
|
||
var db := ClusteringMetrics.DaviesBouldinScore(X, labels);
|
||
|
||
Println($'{k,1} {ari,5:F3} {sil,5:F3} {ch,8:F1} {db,5:F3}');
|
||
end;
|
||
end.
|