ClusterObjects: IEmSeriesList;
ClusterObjects: Prognoz.Platform.Interop.Modeller.IEmSeriesList;
Свойство ClusterObjects возвращает коллекцию объектов иерархического кластерного анализа.
Если не заданы объекты, то корректный расчёт метода невозможен.
Для выполнения примера добавьте ссылки на системные сборки «Modeller», «Stat».
Sub ClusterAnalysis;
Var
ExprMod: IExpressModeller;
Ar: Array[6] Of Double;
Series: IEmSeriesList;
Serie: IEmSerie;
Sett: IEmClusterAnalysisSettings;
Begin
ExprMod := New ExpressModeller.Create;
Sett := ExprMod.CreateClusterAnalysisSettings;
// Задаем объекты кластерного анализа
Series := Sett.ClusterObjects;
Ar[0] := 10; Ar[1] := 20; Ar[2] := 30;
Ar[3] := 40; Ar[4] := 50; Ar[5] := 60;
Serie := ExprMod.Series.Add(Ar, "X1", "Ряд данных 1");
Series.Add(Serie);
ar[0] := 12; ar[1] := 23; ar[2] := 34;
ar[3] := 45; ar[4] := 56; ar[5] := 67;
Serie := ExprMod.Series.Add(Ar, "X2", "Ряд данных 2");
Series.Add(Serie);
ar[0] := 1; ar[1] := 2; ar[2] := 3;
ar[3] := 4; ar[4] := 5; ar[5] := 6;
Serie := ExprMod.Series.Add(Ar, "X3", "Ряд данных 3");
Series.Add(Serie);
// Задаем метод связи
Sett.ClusterLink := ClusterLinkType.CompleteLink;
// Задаем метрику
Sett.ObjectDistance := ObjectDistanceType.EuclideanSqr;
// Задаем способ стандартизации признаков
Sett.Standartization := StandartizationType.ScaleUser;
// Задаем коэффициенты стандартизации
Sett.StdValues := Series.ItemByName("X2");
// Задаем ориентацию дендограммы
Sett.DendogramOrientation := DendogramOrientationType.North;
// Задаем количество кластеров
Sett.ClusterCount := 2;
// Выполняем расчёт
ExprMod.EvaluateMethod("C:\ClusterAnalysis.html", Sett, True);
End Sub ClusterAnalysis;
Результат выполнения примера: будет выполнен расчёт метода «Иерархический кластерный анализ» по заданным параметрам, отчёт о расчёте будет сохранен в файл «C:\ClusterAnalysis.html».
Imports Prognoz.Platform.Interop.Modeller;
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Main(Params: StartParams);
Var
ExprMod: IExpressModeller;
Ar: Array[6] Of Double;
Series: IEmSeriesList;
Serie: IEmSerie;
Sett: IEmClusterAnalysisSettings;
Begin
ExprMod := New ExpressModeller.Create();
Sett := ExprMod.CreateClusterAnalysisSettings();
// Задаем объекты кластерного анализа
Series := Sett.ClusterObjects;
Ar[0] := 10; Ar[1] := 20; Ar[2] := 30;
Ar[3] := 40; Ar[4] := 50; Ar[5] := 60;
Serie := ExprMod.Series.Add(Ar, "X1", "Ряд данных 1");
Series.Add(Serie);
ar[0] := 12; ar[1] := 23; ar[2] := 34;
ar[3] := 45; ar[4] := 56; ar[5] := 67;
Serie := ExprMod.Series.Add(Ar, "X2", "Ряд данных 2");
Series.Add(Serie);
ar[0] := 1; ar[1] := 2; ar[2] := 3;
ar[3] := 4; ar[4] := 5; ar[5] := 6;
Serie := ExprMod.Series.Add(Ar, "X3", "Ряд данных 3");
Series.Add(Serie);
// Задаем метод связи
Sett.ClusterLink := ClusterLinkType.cltCompleteLink;
// Задаем метрику
Sett.ObjectDistance := ObjectDistanceType.odEuclideanSqr;
// Задаем способ стандартизации признаков
Sett.Standartization := StandartizationType.stScaleUser;
// Задаем коэффициенты стандартизации
Sett.StdValues := Series.ItemByName["X2"];
// Задаем ориентацию дендограммы
Sett.DendogramOrientation := DendogramOrientationType.doNorth;
// Задаем количество кластеров
Sett.ClusterCount := 2;
// Выполняем расчёт
ExprMod.EvaluateMethod("C:\ClusterAnalysis.html", Sett, True);
End Sub;
Результат выполнения примера: будет выполнен расчёт метода «Иерархический кластерный анализ» по заданным параметрам, отчёт о расчёте будет сохранен в файл «C:\ClusterAnalysis.html».
См. также: