public generateConfusionMatrixMetricStructure()

in packages/dispatcher/src/mathematics/confusion_matrix/ConfusionMatrixBase.ts [37:387]


    public generateConfusionMatrixMetricStructure(
        quantileConfiguration: number = 4): IConfusionMatrixagglomeratedMetricStructure {
        const confusionMatrix: IConfusionMatrix = this;
        const crossValidationBinaryConfusionMatrix: BinaryConfusionMatrix[] =
            confusionMatrix.getBinaryConfusionMatrices();
        const labelMap: Map<string, number> =
            confusionMatrix.getLabelMap();
        const labelBinaryConfusionMatrixBasicMetricMap: Map<string, Map<string, number>> =
            new Map<string, Map<string, number>>();
        labelMap.forEach((value: number, key: string) => {
            labelBinaryConfusionMatrixBasicMetricMap.set(
                key,
                crossValidationBinaryConfusionMatrix[value].getBasicMetrics());
        });
        const labelBinaryConfusionMatrixMap: Map<string, BinaryConfusionMatrix> =
            new Map<string, BinaryConfusionMatrix>();
        labelMap.forEach((value: number, key: string) => {
            labelBinaryConfusionMatrixMap.set(
                key,
                crossValidationBinaryConfusionMatrix[value]);
        });
        const binaryConfusionMatrices: BinaryConfusionMatrix[] =
            confusionMatrix.getBinaryConfusionMatrices();
        const microQuantileMetrics: IConfusionMatrixQuantileMetrics =
            confusionMatrix.getMicroQuantileMetrics(binaryConfusionMatrices, quantileConfiguration);
        const macroQuantileMetrics: IConfusionMatrixQuantileMetrics =
            confusionMatrix.getMacroQuantileMetrics(binaryConfusionMatrices, quantileConfiguration);
        const microAverageMetricArray: IConfusionMatrixBaseMicroAverageMetrics =
            confusionMatrix.getMicroAverageMetrics(binaryConfusionMatrices);
        const accuracy: number =
            microAverageMetricArray.averagePrecisionRecallF1Accuracy;
        const truePositives: number =
            microAverageMetricArray.truePositives;
        const falsePositives: number =
            microAverageMetricArray.falsePositives;
        const falseNegatives: number =
            microAverageMetricArray.falseNegatives;
        const supportMicroAverage: number =
            microAverageMetricArray.total;
        const microAverageMetrics: IConfusionMatrixBaseMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "accuracy": accuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "truePositives": truePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "falsePositives": falsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "falseNegatives": falseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": supportMicroAverage };
        const summationMicroAverageMetricArray: IConfusionMatrixSummationMetrics =
            confusionMatrix.getSummationMicroAverageMetrics(binaryConfusionMatrices);
        const summationPrecision: number =
            summationMicroAverageMetricArray.summationPrecision;
        const summationRecall: number =
            summationMicroAverageMetricArray.summationRecall;
        const summationF1Score: number =
            summationMicroAverageMetricArray.summationF1Score;
        const summationAccuracy: number =
            summationMicroAverageMetricArray.summationAccuracy;
        const summationTruePositives: number =
            summationMicroAverageMetricArray.summationTruePositives;
        const summationFalsePositives: number =
            summationMicroAverageMetricArray.summationFalsePositives;
        const summationTrueNegatives: number =
            summationMicroAverageMetricArray.summationTrueNegatives;
        const summationFalseNegatives: number =
            summationMicroAverageMetricArray.summationFalseNegatives;
        const summationSupport: number =
            summationMicroAverageMetricArray.summationSupport;
        const total: number =
            summationMicroAverageMetricArray.total;
        const summationMicroAverageMetrics: IConfusionMatrixSummationMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "summationPrecision": summationPrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationRecall": summationRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationF1Score": summationF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationAccuracy": summationAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationTruePositives": summationTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationFalsePositives": summationFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationTrueNegatives": summationTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationFalseNegatives": summationFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "summationSupport": summationSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": total };
        const macroAverageMetricArray: IConfusionMatrixMeanMetrics =
            confusionMatrix.getMacroAverageMetrics(binaryConfusionMatrices);
        const averagePrecision: number =
            macroAverageMetricArray.averagePrecision;
        const averageRecall: number =
            macroAverageMetricArray.averageRecall;
        const averageF1Score: number =
            macroAverageMetricArray.averageF1Score;
        const averageAccuracy: number =
            macroAverageMetricArray.averageAccuracy;
        const averageTruePositives: number =
            macroAverageMetricArray.averageTruePositives;
        const averageFalsePositives: number =
            macroAverageMetricArray.averageFalsePositives;
        const averageTrueNegatives: number =
            macroAverageMetricArray.averageTrueNegatives;
        const averageFalseNegatives: number =
            macroAverageMetricArray.averageFalseNegatives;
        const averageSupport: number =
            macroAverageMetricArray.averageSupport;
        const supportMacroAverage: number =
            macroAverageMetricArray.total;
        const macroAverageMetrics: IConfusionMatrixMeanMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "averagePrecision": averagePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageRecall": averageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageF1Score": averageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageAccuracy": averageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTruePositives": averageTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalsePositives": averageFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTrueNegatives": averageTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalseNegatives": averageFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageSupport": averageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": supportMacroAverage };
        const summationMacroAverageMetricArray: IConfusionMatrixMeanMetrics =
            confusionMatrix.getSummationMacroAverageMetrics(binaryConfusionMatrices);
        const summationAveragePrecision: number =
            summationMacroAverageMetricArray.averagePrecision;
        const summationAverageRecall: number =
            summationMacroAverageMetricArray.averageRecall;
        const summationAverageF1Score: number =
            summationMacroAverageMetricArray.averageF1Score;
        const summationAverageAccuracy: number =
            summationMacroAverageMetricArray.averageAccuracy;
        const summationAverageTruePositives: number =
            summationMacroAverageMetricArray.averageTruePositives;
        const summationAverageFalsePositives: number =
            summationMacroAverageMetricArray.averageFalsePositives;
        const summationAverageTrueNegatives: number =
            summationMacroAverageMetricArray.averageTrueNegatives;
        const summationAverageFalseNegatives: number =
            summationMacroAverageMetricArray.averageFalseNegatives;
        const summationAverageSupport: number =
            summationMacroAverageMetricArray.averageSupport;
        const summationSupportMacroAverage: number =
            summationMacroAverageMetricArray.total;
        const summationMacroAverageMetrics: IConfusionMatrixMeanMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "averagePrecision": summationAveragePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageRecall": summationAverageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageF1Score": summationAverageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageAccuracy": summationAverageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTruePositives": summationAverageTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalsePositives": summationAverageFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTrueNegatives": summationAverageTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalseNegatives": summationAverageFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageSupport": summationAverageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": summationSupportMacroAverage };
        const positiveSupportLabelMacroAverageMetricArray: IConfusionMatrixMeanMetrics =
            confusionMatrix.getPositiveSupportLabelMacroAverageMetrics(binaryConfusionMatrices);
        const positiveSupportLabelAveragePrecision: number =
            positiveSupportLabelMacroAverageMetricArray.averagePrecision;
        const positiveSupportLabelAverageRecall: number =
            positiveSupportLabelMacroAverageMetricArray.averageRecall;
        const positiveSupportLabelAverageF1Score: number =
            positiveSupportLabelMacroAverageMetricArray.averageF1Score;
        const positiveSupportLabelAverageAccuracy: number =
            positiveSupportLabelMacroAverageMetricArray.averageAccuracy;
        const positiveSupportLabelAverageTruePositives: number =
            positiveSupportLabelMacroAverageMetricArray.averageTruePositives;
        const positiveSupportLabelAverageFalsePositives: number =
            positiveSupportLabelMacroAverageMetricArray.averageFalsePositives;
        const positiveSupportLabelAverageTrueNegatives: number =
            positiveSupportLabelMacroAverageMetricArray.averageTrueNegatives;
        const positiveSupportLabelAverageFalseNegatives: number =
            positiveSupportLabelMacroAverageMetricArray.averageFalseNegatives;
        const positiveSupportLabelAverageSupport: number =
            positiveSupportLabelMacroAverageMetricArray.averageSupport;
        const positiveSupportLabelSupportMacroAverage: number =
            positiveSupportLabelMacroAverageMetricArray.total;
        const positiveSupportLabelMacroAverageMetrics: IConfusionMatrixMeanMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "averagePrecision": positiveSupportLabelAveragePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageRecall": positiveSupportLabelAverageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageF1Score": positiveSupportLabelAverageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageAccuracy": positiveSupportLabelAverageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTruePositives": positiveSupportLabelAverageTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalsePositives": positiveSupportLabelAverageFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTrueNegatives": positiveSupportLabelAverageTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalseNegatives": positiveSupportLabelAverageFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageSupport": positiveSupportLabelAverageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": positiveSupportLabelSupportMacroAverage };
        const positiveSupportLabelSummationMacroAverageMetricArray: IConfusionMatrixMeanMetrics =
            confusionMatrix.getPositiveSupportLabelSummationMacroAverageMetrics(binaryConfusionMatrices);
        const positiveSupportLabelSummationAveragePrecision: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averagePrecision;
        const positiveSupportLabelSummationAverageRecall: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageRecall;
        const positiveSupportLabelSummationAverageF1Score: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageF1Score;
        const positiveSupportLabelSummationAverageAccuracy: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageAccuracy;
        const positiveSupportLabelSummationAverageTruePositives: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageTruePositives;
        const positiveSupportLabelSummationAverageFalsePositives: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageFalsePositives;
        const positiveSupportLabelSummationAverageTrueNegatives: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageTrueNegatives;
        const positiveSupportLabelSummationAverageFalseNegatives: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageFalseNegatives;
        const positiveSupportLabelSummationAverageSupport: number =
            positiveSupportLabelSummationMacroAverageMetricArray.averageSupport;
        const positiveSupportLabelSummationSupportMacroAverage: number =
            positiveSupportLabelSummationMacroAverageMetricArray.total;
        const positiveSupportLabelSummationMacroAverageMetrics: IConfusionMatrixMeanMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "averagePrecision": positiveSupportLabelSummationAveragePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageRecall": positiveSupportLabelSummationAverageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageF1Score": positiveSupportLabelSummationAverageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageAccuracy": positiveSupportLabelSummationAverageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTruePositives": positiveSupportLabelSummationAverageTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalsePositives": positiveSupportLabelSummationAverageFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTrueNegatives": positiveSupportLabelSummationAverageTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalseNegatives": positiveSupportLabelSummationAverageFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageSupport": positiveSupportLabelSummationAverageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": positiveSupportLabelSummationSupportMacroAverage };
        const weightedMacroAverageMetricArray: IConfusionMatrixMeanDerivedMetrics =
            confusionMatrix.getWeightedMacroAverageMetrics(binaryConfusionMatrices);
        const weightedAveragePrecision: number =
            weightedMacroAverageMetricArray.averagePrecision;
        const weightedAverageRecall: number =
            weightedMacroAverageMetricArray.averageRecall;
        const weightedAverageF1Score: number =
            weightedMacroAverageMetricArray.averageF1Score;
        const weightedAverageAccuracy: number =
            weightedMacroAverageMetricArray.averageAccuracy;
        const weightedAverageSupport: number =
            weightedMacroAverageMetricArray.averageSupport;
        const supportWeightedMacroAverage: number =
            weightedMacroAverageMetricArray.total;
        const weightedMacroAverageMetrics: IConfusionMatrixMeanDerivedWeightedMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "weightedAveragePrecision": weightedAveragePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "weightedAverageRecall": weightedAverageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "weightedAverageF1Score": weightedAverageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "weightedAverageAccuracy": weightedAverageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "weightedAverageSupport": weightedAverageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": supportWeightedMacroAverage };
        const summationWeightedMacroAverageMetricArray: IConfusionMatrixMeanMetrics =
            confusionMatrix.getSummationWeightedMacroAverageMetrics(binaryConfusionMatrices);
        const summationWeightedAveragePrecision: number =
            summationWeightedMacroAverageMetricArray.averagePrecision;
        const summationWeightedAverageRecall: number =
            summationWeightedMacroAverageMetricArray.averageRecall;
        const summationWeightedAverageF1Score: number =
            summationWeightedMacroAverageMetricArray.averageF1Score;
        const summationWeightedAverageAccuracy: number =
            summationWeightedMacroAverageMetricArray.averageAccuracy;
        const summationWeightedAverageTruePositives: number =
            summationWeightedMacroAverageMetricArray.averageTruePositives;
        const summationWeightedAverageFalsePositives: number =
            summationWeightedMacroAverageMetricArray.averageFalsePositives;
        const summationWeightedAverageTrueNegatives: number =
            summationWeightedMacroAverageMetricArray.averageTrueNegatives;
        const summationWeightedAverageFalseNegatives: number =
            summationWeightedMacroAverageMetricArray.averageFalseNegatives;
        const summationWeightedAverageSupport: number =
            summationWeightedMacroAverageMetricArray.averageSupport;
        const summationWeightedSupportMacroAverage: number =
            summationWeightedMacroAverageMetricArray.total;
        const summationWeightedMacroAverageMetrics: IConfusionMatrixMeanMetrics = {
            // tslint:disable-next-line: object-literal-key-quotes
            "averagePrecision": summationWeightedAveragePrecision,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageRecall": summationWeightedAverageRecall,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageF1Score": summationWeightedAverageF1Score,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageAccuracy": summationWeightedAverageAccuracy,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTruePositives": summationWeightedAverageTruePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalsePositives": summationWeightedAverageFalsePositives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageTrueNegatives": summationWeightedAverageTrueNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageFalseNegatives": summationWeightedAverageFalseNegatives,
            // tslint:disable-next-line: object-literal-key-quotes
            "averageSupport": summationWeightedAverageSupport,
            // tslint:disable-next-line: object-literal-key-quotes
            "total": summationWeightedSupportMacroAverage };
        const confusionMatrixMetricStructure: IConfusionMatrixagglomeratedMetricStructure = {
            microQuantileMetrics,
            macroQuantileMetrics,
            confusionMatrix,
            labelBinaryConfusionMatrixBasicMetricMap,
            labelBinaryConfusionMatrixMap,
            microAverageMetrics,
            summationMicroAverageMetrics,
            macroAverageMetrics,
            summationMacroAverageMetrics,
            positiveSupportLabelMacroAverageMetrics,
            positiveSupportLabelSummationMacroAverageMetrics,
            weightedMacroAverageMetrics,
            summationWeightedMacroAverageMetrics };
        return confusionMatrixMetricStructure;
    }