IClustersCompositionOrderItem.ClusterDistance

Синтаксис

ClusterDistance: Double;

Описание

Свойство ClusterDistance возвращает расстояние между кластерами в момент объединения.

Пример

Sub Main;

Var

hc: SmHierarchicalClusterAnalysis;

Obj: ISlSeries;

x1: Array Of Double;

Dist: ISlDistance;

res, i: Integer;

D: Double;

ClsOrder: IClustersCompositionOrder;

ClOrder: IClustersCompositionOrderItem;

Begin

hc := New SmHierarchicalClusterAnalysis.Create;

x1 := New Double[3];

//добавление признаков, в данном случае 5 объектов с 3мя признаками

x1[0] := 1; x1[1] := 1; x1[2] := 1;

Obj := hc.Objects;

Obj.Add.Value := x1;

x1[0] := 2; x1[1] := 3; x1[2] := 2;

Obj.Add.Value := x1;

x1[0] := 3; x1[1] := 6; x1[2] := 3;

Obj.Add.Value := x1;

x1[0] := 4; x1[1] := 8; x1[2] := 10;

Obj.Add.Value := x1;

x1[0] := 5; x1[1] := 8; x1[2] := 0;

Obj.Add.Value := x1;

hc.ClusterLink := ClusterLinkType.Centroid;

hc.ClusterCount := 2;

Dist := hc.Distance;

Dist.Type := ObjectDistanceType.EuclideanSqr;

Dist.Standartization := StandartizationType.ScaleStd;

res := hc.Execute;

If res <> 0 Then

Debug.WriteLine(hc.Errors);

Else

Debug.WriteLine("Последовательность составления кластеров");

ClsOrder := hc.ClustersCompositionOrder;

Debug.WriteLine("Нижний кл. Верхний кл. Расстояние");

For i := 0 To ClsOrder.Count - 1 Do

ClOrder := ClsOrder.Item(i);

d := ClOrder.IndexLowerCluster;

Debug.Write(d.ToString + ", ");

d := ClOrder.IndexUpperCluster;

Debug.Write(d.ToString + ", ");

d := ClOrder.ClusterDistance;

Debug.WriteLine(d.ToString);

End For;

End If;

End Sub Main;

После выполнения примера в окно консоли будет выведена последовательность составления кластеров и расстояния между ними в момент объединения:

Module execution started

Последовательность составления кластеров

Нижний кл. Верхний кл. Расстояние

1, 2, 0.87606540153654211

3, 5, 2.5856195416639305

3, 4, 4.705003611530632

1, 3, 5.9437403783716745

Module execution finished

См. также:

IClustersCompositionOrderItem