import { PrintObject } from "./PrintObject";
import { String } from "../dataType/String";
import { FeatureCollection } from "@turf/turf";
import { List } from "../dataType/List";
import { ConfusionMatrix } from "./ConfusionMatrix";
/**
* @class gve.Classifier
* @since gve
*/
export class Classifier extends PrintObject {
/**
* Classifier
* @hideconstructor
* @return gve.Classifier
* @tutorial gve
*/
constructor() {
super();
if (!(this instanceof Classifier)) {
return new Classifier();
}
}
/**
* 为给定的距离度量创建最小距离分类器
* @param {string} metric 要使用的距离度量
* @param {number} kNearest k个最近邻居或距离组成的数组
* @returns Classifier
*/
minimumDistance(metric: string='euclidean', kNearest: number=1) {
return new Classifier();
}
/**
* 为给定的距离度量创建最小距离分类器
* @param {string} metric 要使用的距离度量
* @param {number} kNearest k个最近邻居或距离组成的数组
* @returns Classifier
* @tutorial gve.Classifier
*/
static minimumDistance(metric: string='euclidean', kNearest: number=1) {
return new Classifier();
}
/**
* 对FeatureCollection实例进行训练
* @param {FeatureCollection} features 需要训练的featureCollection集合
* @param {string} classProperty 包含类属性名称的值
* @param {any[]|List<any>} inputProperties 作为训练数据的属性名称列表
* @returns Classifier
*/
train(features: FeatureCollection, classProperty: string, inputProperties: any[]|List<any> = null) {
return new Classifier();
}
/**
* 描述训练过的分类器的结果
* @returns Classifier
*/
explain() {
return new Classifier();
}
/**
* 根据分类器的训练数据计算分类器的二维混淆矩阵
* @returns ConfusionMatrix
*/
confusionMatrix() {
return new ConfusionMatrix();
}
/**
* 创建一个空的CART分类器,决策树算法
* @param {number} [maxNodes] 可选参数,每棵树的节点的最大数量,如果没有指定,则无限制
* @param {number} [minLeafPopulation] 可选参数,创建训练集包含的节点数量
* @param {number} [maxDepth] 可选参数,树的最大深度
* @returns Classifier
* @tutorial gve.Classifier
*/
static Cart(maxNodes?: number, minLeafPopulation?: number, maxDepth?: number) {
return new Classifier();
}
/**
* 创建一个空的随机森林分类器
* @param {number} numberOfTrees 创建的决策树数量
* @param {number} [variablesPerSplit] 可选参数,每个变量拆分的数量
* @param {number} [minLeafPopulation] 可选参数,创建至少包含这些点的节点
* @param {number} [bagFraction] 可选参数,每棵树的输入袋比例
* @param {number} [maxNodes] 可选参数,每棵树中最大的叶子节点数量
* @param {number} [seed] 可选参数,随机种子
* @returns Classifier
* @tutorial gve.Classifier
*/
static smileRandomForest(numberOfTrees: number, variablesPerSplit?: number,
minLeafPopulation?: number, bagFraction?: number, maxNodes?: number, seed?: number) {
return new Classifier();
}
/**
* 设置输出模式
* @param {string} [mode] 可选参数,输出模式CLASSIFICATION|REGRESSION|PROBABILITY|MULTIPROBABILITY|RAW|RAW_REGRESSION中之一
* @returns Classifier
*/
setOutputMode(mode?: string) {
return new Classifier();
}
/**
* 创建一个空的CART分类器
* @param {number} [maxNodes] 可选参数,整数,默认值:null,每棵树的最大叶子节点数。如果未指定,则默认为无限制
* @param {number} [minLeafPopulation] 可选参数,整数,默认值:1,仅创建训练集包含至少这么多点的节点
* @returns Classifier
* @tutorial gve.Classifier
*/
static smileCart(maxNodes?: number, minLeafPopulation?: number) {
return new Classifier();
}
/**
* 创建一个空的梯度树提升分类器
* @param {number} numberOfTrees 整数, 需要创建的决策树数量
* @param {number} [shrinkage] 可选参数,浮点数, 默认值: 0.005, (0, 1] 范围内的收缩参数控制程序的学习速率
* @param {number} [samplingRate] 可选参数,浮点数, 默认值: 0.7, 随机树提升的采样率
* @param {number} [maxNodes] 可选参数,整数, 默认值: null,每棵树的最大叶子节点数量。如果没有指定,默认为无限制
* @param {string} [loss] 可选参数,默认值: "LeastAbsoluteDeviation", 回归的损失函数。可以是:LeastSquares, LeastAbsoluteDeviation, Huber
* @param {number} [seed] 可选参数,整数, 默认值: 0,随机化种子
* @returns Classifier
* @tutorial gve.Classifier
*/
static smileGradientTreeBoost(numberOfTrees: number, shrinkage?: number,
samplingRate?: number, maxNodes?: number, loss?: string, seed?: number) {
return new Classifier();
}
}