kumulant

ClassificationTree

class ClassificationTree(numClasses: Int, splitCandidates: List<SerializableSplit>, config: ClassificationTreeConfig = ClassificationTreeConfig(), concurrency: Concurrency = Concurrency.None, leafArmFactory: () -> SeriesStat<ClassCountsResult> = { ClassCountsStat(numClasses, concurrency) }, randomSeed: Int = 0)(source)

Classification mirror of RegressionTree: online VFDT decision tree where each leaf carries a per-class count accumulator and audit leaves track class counts per candidate split. Splits fire when a candidate clears the Hoeffding bound on the configured ClassificationSplitMetric (Gini or information gain).

Both trees drive the same TreeGrowth engine, each parameterising it with its own node types.

Concurrency model matches RegressionTree: lock-free leaf updates, single split-conversion lock fired only at split-decision time.

Constructors

ClassificationTree

constructor(numClasses: Int, splitCandidates: List<SerializableSplit>, config: ClassificationTreeConfig = ClassificationTreeConfig(), concurrency: Concurrency = Concurrency.None, leafArmFactory: () -> SeriesStat<ClassCountsResult> = { ClassCountsStat(numClasses, concurrency) }, randomSeed: Int = 0)(source)

Properties

nodeCount

Number of internal + leaf nodes currently in the tree.

Functions

findLeaf

fun findLeaf(row: F64VectorView): ClassificationLeafNode(source)

Walk to the leaf row resolves to.

merge

Structurally merge other into this tree; other is consumed.

mergeSnapshot

Snapshot merge: same rules as merge but the other side is an immutable result.

predict

fun predict(row: F64VectorView): Int(source)

Argmax class at the leaf row resolves to.

prettyPrint

fun prettyPrint(indent: String = ""): String(source)

Render the tree as nested if-else text.

probabilities

fun probabilities(row: F64VectorView): DoubleArray(source)

Probabilities at the leaf row resolves to.

reset

fun reset()(source)

Reset to a single fresh leaf.

rootNode

Live root node, for snapshotting.

rootSnapshot

Aggregate class-count snapshot at the root, walking leaves and split carryovers.

update

fun update(row: F64VectorView, classLabel: Int, weight: Double = 1.0)(source)

Fold an observation (row, classLabel) into the tree, possibly growing it.