Table of Contents

Class KBinsDiscretizer<T>

Namespace
AiDotNet.Preprocessing.Discretizers
Assembly
AiDotNet.dll

Bins continuous features into discrete intervals.

public class KBinsDiscretizer<T> : TransformerBase<T, Matrix<T>, Matrix<T>>, IDataTransformer<T, Matrix<T>, Matrix<T>>

Type Parameters

T

The numeric type for calculations (e.g., float, double).

Inheritance
TransformerBase<T, Matrix<T>, Matrix<T>>
KBinsDiscretizer<T>
Implements
IDataTransformer<T, Matrix<T>, Matrix<T>>
Inherited Members

Remarks

KBinsDiscretizer discretizes features into k equal-width or quantile-based bins. This is useful for transforming continuous features into categorical features, which can help certain models like decision trees and reduce sensitivity to outliers.

For Beginners: This transformer groups continuous values into bins (categories): - Uniform strategy: Divides the range into equal-width intervals - Quantile strategy: Divides so each bin has roughly equal number of samples

Example with 3 bins using uniform strategy: [1, 5, 10, 15, 20, 25] with range 1-25 creates bins:

  • Bin 0: 1-9 → values 1, 5
  • Bin 1: 9-17 → values 10, 15
  • Bin 2: 17-25 → values 20, 25

Constructors

KBinsDiscretizer(int, BinningStrategy, EncodeMode, int[]?)

Creates a new instance of KBinsDiscretizer<T>.

public KBinsDiscretizer(int nBins = 5, BinningStrategy strategy = BinningStrategy.Quantile, EncodeMode encode = EncodeMode.Ordinal, int[]? columnIndices = null)

Parameters

nBins int

The number of bins to use. Defaults to 5.

strategy BinningStrategy

The strategy for determining bin edges. Defaults to Quantile.

encode EncodeMode

The encoding mode for output. Defaults to Ordinal.

columnIndices int[]

The column indices to discretize, or null for all columns.

Properties

BinEdges

Gets the bin edges for each feature computed during fitting.

public List<T[]>? BinEdges { get; }

Property Value

List<T[]>

Encode

Gets the encoding mode used.

public EncodeMode Encode { get; }

Property Value

EncodeMode

NBins

Gets the number of bins used for discretization.

public int NBins { get; }

Property Value

int

Strategy

Gets the binning strategy used.

public BinningStrategy Strategy { get; }

Property Value

BinningStrategy

SupportsInverseTransform

Gets whether this transformer supports inverse transformation.

public override bool SupportsInverseTransform { get; }

Property Value

bool

Remarks

Inverse transform returns bin midpoints, as exact original values cannot be recovered.

Methods

FitCore(Matrix<T>)

Computes the bin edges for each feature from the training data.

protected override void FitCore(Matrix<T> data)

Parameters

data Matrix<T>

The training data matrix where each column is a feature.

GetFeatureNamesOut(string[]?)

Gets the output feature names after transformation.

public override string[] GetFeatureNamesOut(string[]? inputFeatureNames = null)

Parameters

inputFeatureNames string[]

The input feature names.

Returns

string[]

The same feature names (KBinsDiscretizer doesn't change number of features).

InverseTransformCore(Matrix<T>)

Reverses the discretization by returning bin midpoints.

protected override Matrix<T> InverseTransformCore(Matrix<T> data)

Parameters

data Matrix<T>

The discretized data.

Returns

Matrix<T>

The approximate original-scale data using bin midpoints.

TransformCore(Matrix<T>)

Transforms the data by discretizing each feature into bins.

protected override Matrix<T> TransformCore(Matrix<T> data)

Parameters

data Matrix<T>

The data to transform.

Returns

Matrix<T>

The discretized data.