IDmClusteringDetails.CategoriesCount

Fore Syntax

CategoriesCount: Integer;

Fore.NET Syntax

CategoriesCount: integer;

Description

The CategoriesCount property determines the number of clusters the source data is divided into.

Comments

By default, the data is divided into two clusters.

Fore Example

Executing the example requires that the repository contains a table containing data for analysis with the DM_TABLE identifier. A regular report with the DM_REPORT_RES identifier where analysis results will be loaded must also be present.

Add links to the Metabase, Ms, Report, Stat, Tab system assemblies.

Sub UserKModes;
Var
    mb: IMetabase;
    ReportDS: IDmReportDataSource;
    TableDS: IDmTableDataSource;
    Method: IDmMethod;
    Report: IPrxReport;
    Shs: IPrxSheets;
    Sheet: ITabSheet;
    DM: IDmKmodesClusterAnalysis;
    i, j: Integer;
    Attrs: Array Of Integer;
    Reports: IDmReports;
    DmReport: IDmReport;
Begin
    mb := MetabaseClass.Active;
    // Create calculation method
    Method := (New DataMiningMethod.Create) As IDmMethod;
    // Specify method type
    Method.Kind := DmMethodKind.KmodesClusterAnalysis;
    // Create table data source
    TableDS := (New TableDataSource.Create) As IDmTableDataSource;
    // Determine source table
    TableDS.Table := mb.ItemByID("DM_TABLE").Bind;
    // Set input data source
    Method.InputDataSource := TableDS;
    // Create a data source that is a regular report
    ReportDS := (New ReportDataSource.Create) As IDmReportDataSource;
    // Set data consumer
    Method.OutputDataSource := ReportDS;
    // Set up calculation method parameters
    DM := Method.Details As IDmKmodesClusterAnalysis;
    // Set forecasting data
    Attrs := New Integer[6];
    For i := 0 To 5 Do
        Attrs[i] := i;
    End For;
    DM.Attributes := Attrs;
    // Set number of clusters
    DM.CategoriesCount := 3;
    // Perform analysis and output results
    Reports := Method.Execute;
    DmReport := reports.FindByType(DmReportType.KmodesClusterAnalysis);
    ReportDS := DmReport.Generate;
    ReportDS.TabSheet.View.Selection.SelectAll;
    ReportDS.TabSheet.View.Selection.Copy;
    // Get regular report to which results will be unloaded
    Report := mb.ItemByID("DM_REPORT_RES").Edit As IPrxReport;
    Shs := Report.Sheets;
    Shs.Clear;
    Sheet := (Shs.Add("", PrxSheetType.Table) As IPrxTable).TabSheet;
    Sheet.Table.Paste;
    Sheet.Columns(01).AdjustWidth;
    Sheet.Rows(01).AdjustHeight;
    Report.Sheets.Item(0).Name := ReportDS.Caption;
    // Save unloaded data
    (Report As IMetabaseObject).Save;
    // Display analyzed data to the console window
    For i := 0 To TableDS.RecordCount - 1 Do
        For j := 0 To TableDS.FieldCount - 1 Do
            Debug.Write(TableDS.Item(i, j) + "; ");
        End For;
        Debug.WriteLine("");
    End For;
End Sub UserKModes;

After executing the example data from the DM_TABLE table is clustered using the K-modes method, results of the analysis will be unloaded to the DM_REPORT_RES report. Analyzed data will be displayed in the console window.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Stat;
Imports Prognoz.Platform.Interop.Tab;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    ReportDS: IDmReportDataSource;
    TableDS: IDmTableDataSource;
    Method: IDmMethod;
    Report: IPrxReport;
    Shs: IPrxSheets;
    Sheet: ITabSheet;
    DM: IDmKmodesClusterAnalysis;
    i, j: Integer;
    Attrs: Array Of Integer;
    Reports: IDmReports;
    DmReport: IDmReport;
Begin
    mb := Params.Metabase;
    // Create calculation method
    Method := (New DataMiningMethod.Create()) As IDmMethod;
    // Specify method type
    Method.Kind := DmMethodKind.dmmkKmodesClusterAnalysis;
    // Create table data source
    TableDS := (New TableDataSource.Create()) As IDmTableDataSource;
    // Determine source table
    TableDS.Table := mb.ItemByID["DM_TABLE"].Bind();
    // Set input data source
    Method.InputDataSource := TableDS;
    // Create a data source that is a regular report
    ReportDS := (New ReportDataSource.Create()) As IDmReportDataSource;
    // Set data consumer
    Method.OutputDataSource := ReportDS;
    // Set up calculation method parameters
    DM := Method.Details As IDmKmodesClusterAnalysis;
    // Set forecasting data
    Attrs := New Integer[6];
    For i := 0 To 5 Do
        Attrs[i] := i;
    End For;
    DM.Attributes := Attrs;
    // Set number of clusters
    DM.CategoriesCount := 3;
    // Perform analysis and output results
    Reports := Method.Execute();
    DmReport := reports.FindByType[DmReportType.drtKmodesClusterAnalysis];
    ReportDS := DmReport.Generate();
    ReportDS.TabSheet.View.Selection.SelectAll();
    ReportDS.TabSheet.View.Selection.Copy();
    // Get regular report to which results will be unloaded
    Report := mb.ItemByID["DM_REPORT_RES"].Edit() As IPrxReport;
    Shs := Report.Sheets;
    Shs.Clear();
    Sheet := (Shs.Add("", PrxSheetType.pstTable) As IPrxTable).TabSheet;
    Sheet.Table.Paste();
    Sheet.Columns[01].AdjustWidth(-1, -1);
    Sheet.Rows[01].AdjustHeight(-1, -1);
    Report.Sheets.Item[0].Name := ReportDS.Caption;
    // Save unloaded data
    (Report As IMetabaseObject).Save();
    // Display analyzed data to the console window
    For i := 0 To TableDS.RecordCount - 1 Do
        For j := 0 To TableDS.FieldCount - 1 Do
            System.Diagnostics.Debug.Write(TableDS.Item[i, j] + "; ");
        End For;
        System.Diagnostics.Debug.WriteLine("");
    End For;
End Sub;

See also:

IDmClusteringDetails