Though steady variables in real-world datasets present detailed data, they don’t seem to be all the time the best type for modelling and interpretation. That is the place variable discretization comes into play.
Understanding variable discretization is important for knowledge science college students constructing robust ML foundations and AI engineers designing interpretable programs.
Early in my knowledge science journey, I primarily targeted on tuning hyperparameters, experimenting with completely different algorithms, and optimising efficiency metrics.
Once I experimented with variable discretization strategies, I seen how sure ML fashions grew to become extra steady and interpretable. So, I made a decision to clarify these strategies on this article.
is variable discretization?
Some work higher with discrete variables. For instance, if we need to practice a choice tree mannequin on a dataset with steady variables, it’s higher to remodel these variables into discrete variables to cut back the mannequin coaching time.
Variable discretization is the method of reworking steady variables into discrete variables by creating bins, that are a set of steady intervals.
Benefits of variable discretization
- Resolution timber and naive bayes modles work higher with discrete variables.
- Discrete options are simple to grasp and interpret.
- Discretization can scale back the influence of skewed variables and outliers in knowledge.
In abstract, discretization simplifies knowledge and permits fashions to coach sooner.
Disadvantages of variable discretization
The principle drawback of variable discretization is the lack of data occurred as a result of creation of bins. We have to discover the minimal variety of bins and not using a important lack of data. The algorithm can’t discover this quantity itself. The consumer must enter the variety of bins as a mannequin hyperparameter. Then, the algorithm will discover the reduce factors to match the variety of bins.
Supervised and unsupervised discretization
The principle classes of discretization strategies are supervised and unsupervised. Unsupervised strategies decide the bounds of the bins through the use of the underlying distribution of the variable, whereas supervised strategies use floor fact values to find out these bounds.
Forms of variable discretization
We are going to focus on the next varieties of variable discretization.
- Equal-width discretization
- Equal-frequency discretization
- Arbitrary-interval discretization
- Ok-means clustering-based discretization
- Resolution tree-based discretization
Equal-width discretization
Because the identify suggests, this methodology creates bins of equal measurement. The width of a bin is calculated by dividing the vary of values of a variable, X, by the variety of bins, ok.
Width = {Max(X) — Min(X)} / ok
Right here, ok is a hyperparameter outlined by the consumer.
For instance, if the values of X vary between 0 and 50 and ok=5, we get 10 because the bin width and the bins are 0–10, 10–20, 20–30, 30–40 and 40–50. If ok=2, the bin width is 25 and the bins are 0–25 and 25–50. So, the bin width differs primarily based on the worth of the ok hyperparameter. Equal-width discretization assings a special variety of knowledge factors to every bin. The bin widths are the identical.
Let’s implement equal-width discretization utilizing the Iris dataset. technique='uniform' in KBinsDiscretizer() creates bins of equal width.
# Import libraries
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import KBinsDiscretizer
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.knowledge, columns=iris.feature_names)
# Choose one function
function = 'sepal size (cm)'
X = df[[feature]]
# Initialize
equal_width = KBinsDiscretizer(
n_bins=15,
encode='ordinal',
technique='uniform'
)
bins_equal_width = equal_width.fit_transform(X)
plt.hist(bins_equal_width, bins=15)
plt.title("Equal Width Discretization")
plt.xlabel(function)
plt.ylabel("Depend")
plt.present()

The histogram exhibits equal-range width bins.
Equal-frequency discretization
This methodology allocates the values of the variable into the bins that comprise an analogous variety of knowledge factors. The bin widths will not be the identical. The bin width is decided by quantiles, which divide the info into 4 equal elements. Right here additionally, the variety of bins is outlined by the consumer as a hyperparameter.
The main drawback of equal-frequency discretization is that there will probably be many empty bins or bins with a number of knowledge factors if the distribution of the info factors is skewed. This can end in a big lack of data.
Let’s implement equal-width discretization utilizing the Iris dataset. technique='quantile' in KBinsDiscretizer() creates balanced bins. Every bin has (roughly) an equal variety of knowledge factors.
# Import libraries
import pandas as pd
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.knowledge, columns=iris.feature_names)
# Choose one function
function = 'sepal size (cm)'
X = df[[feature]]
# Initialize
equal_freq = KBinsDiscretizer(
n_bins=3,
encode='ordinal',
technique='quantile'
)
bins_equl_freq = equal_freq.fit_transform(X)
Arbitrary-interval discretization
On this methodology, the consumer allocates the info factors of a variable into bins in such a means that it is smart (arbitrary). For instance, you might allocate the values of the variable temperature in bins representing “chilly”, “regular” and “scorching”. The precedence is given to the overall sense. There is no such thing as a must have the identical bin width or an equal variety of knowledge factors in a bin.
Right here, we manually outline bin boundaries primarily based on area data.
# Import libraries
import pandas as pd
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.knowledge, columns=iris.feature_names)
# Choose one function
function = 'sepal size (cm)'
X = df[[feature]]
# Outline customized bins
custom_bins = [4, 5.5, 6.5, 8]
df['arbitrary'] = pd.reduce(
df[feature],
bins=custom_bins,
labels=[0,1,2]
)
Ok-means clustering-based discretization
Ok-means clustering focuses on grouping comparable knowledge factors into clusters. This function can be utilized for variable discretization. On this methodology, bins are the clusters recognized by the k-means algorithm. Right here additionally, we have to outline the variety of clusters, ok, as a mannequin hyperparameter. There are a number of strategies to find out the optimum worth of ok. Learn this article to study these strategies.
Right here, we use KMeans algorithm to create teams which act as discretized classes.
# Import libraries
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.knowledge, columns=iris.feature_names)
# Choose one function
function = 'sepal size (cm)'
X = df[[feature]]
kmeans = KMeans(n_clusters=3, random_state=42)
df['kmeans'] = kmeans.fit_predict(X)
Resolution tree-based discretization
The choice tree-based discretization course of makes use of choice timber to seek out the bounds of the bins. Not like different strategies, this one mechanically finds the optimum variety of bins. So, the consumer doesn’t must outline the variety of bins as a hyperparameter.
The discretization strategies that we mentioned thus far are supervised strategies. Nonetheless, this methodology is an unsupervised methodology which means that we additionally use goal values, y, to find out the bounds.
# Import libraries
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.knowledge, columns=iris.feature_names)
# Choose one function
function = 'sepal size (cm)'
X = df[[feature]]
# Get the goal values
y = iris.goal
tree = DecisionTreeClassifier(
max_leaf_nodes=3,
random_state=42
)
tree.match(X, y)
# Get leaf node for every pattern
df['decision_tree'] = tree.apply(X)
tree = DecisionTreeClassifier(
max_leaf_nodes=3,
random_state=42
)
tree.match(X, y)
That is the overview of variablee discretization strategies. The implementation of every methodology will probably be mentioned in separate articles.
That is the tip of in the present day’s article.
Please let me know if in case you have any questions or suggestions.
How about an AI course?
See you within the subsequent article. Comfortable studying to you!
Iris dataset data
- Quotation: Dua, D. and Graff, C. (2019). UCI Machine Studying Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: College of California, College of Info and Pc Science.
- Supply: https://archive.ics.uci.edu/ml/datasets/iris
- License: R.A. Fisher holds the copyright of this dataset. Michael Marshall donated this dataset to the general public underneath the Inventive Commons Public Area Dedication License (CC0). You possibly can study extra about completely different dataset license varieties right here.
Designed and written by:
Rukshan Pramoditha
2025–03–04
















