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
TThe numeric type for calculations (e.g., float, double).
- Inheritance
-
KBinsDiscretizer<T>
- Implements
- 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
nBinsintThe number of bins to use. Defaults to 5.
strategyBinningStrategyThe strategy for determining bin edges. Defaults to Quantile.
encodeEncodeModeThe encoding mode for output. Defaults to Ordinal.
columnIndicesint[]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
NBins
Gets the number of bins used for discretization.
public int NBins { get; }
Property Value
Strategy
Gets the binning strategy used.
public BinningStrategy Strategy { get; }
Property Value
SupportsInverseTransform
Gets whether this transformer supports inverse transformation.
public override bool SupportsInverseTransform { get; }
Property Value
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
dataMatrix<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
inputFeatureNamesstring[]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
dataMatrix<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
dataMatrix<T>The data to transform.
Returns
- Matrix<T>
The discretized data.