import { Array } from "../dataType/Array";
import { List } from "../dataType/List";
import { Number } from "../dataType/Number";
import { PrintObject } from "./PrintObject";

/**
 * gve
 * @class gve.ConfusionMatrix
 * @since gve
 */
export class ConfusionMatrix extends PrintObject {
  /**
   * 构造混淆矩阵
   * @hideconstructor
   * @param {Array<Array<Number>>} param 构造混淆矩阵的集合
   * @return gve.ConfusionMatrix
   */
  constructor(param?: number[][] | Array<any>) {

    super();
    if (!(this instanceof ConfusionMatrix)) {
      return new ConfusionMatrix(param);
    }
  }

  /**
   *  准确率
   *  @return number
   */
  accuracy() {
    return new Number();
  }

  /**
   *  精确率
   *  @return List<number>
   */
  precision() {
    return new List<number>();
  }

  /**
   *  召回率
   *  @return List<number>
   */
  recall() {
    return new List<number>();
  }

  /**
   *  kappa系数
   *  @return number
   */
  kappa() {
    return new Number();
  }

  /**
   *  F beta系数
   *  @return List<number>
   */
  fscore() {
    return new List<number>();
  }

  /**
   *  计算混淆矩阵中每一行的消费者准确率(可靠性),定义为(正确 / 总数)
   *  @return Array
   */
  consumersAccuracy() {
    return new Array();
  }

  /**
   *  计算混淆矩阵中每列的生产者准确度,定义为(正确 / 总数)
   *  @return Array
   */
  producersAccuracy() {
    return new Array();
  }

  /**
   *  返回矩阵中行和列的名称和顺序
   *  @return List
   */
  order() {
    return new List();
  }


}