如何使用 Python Scikit-learn 对数据进行二值化?


二值化是一种预处理技术,当我们需要将数据转换为二进制数字(即需要对数据进行二值化)时使用。名为Sklearn.preprocessing.binarize() 的 scikit-learn 函数用于对数据进行二值化。

此二值化函数具有阈值参数,低于或等于此阈值的特征值将替换为 0,高于此阈值的特征值将替换为 1。

在本教程中,我们将学习如何使用 Python 中的 Scikit-learn (Sklearn) 对数据和稀疏矩阵进行二值化。

示例

让我们来看一个将 NumPy 数组预处理为二进制数字的示例:

# Importing the necessary packages import sklearn import numpy as np from sklearn import preprocessing X = [[ 0.4, -1.8, 2.9],[ 2.5, 0.9, 0.3],[ 0., 1., -1.5],[ 0.1, 2.9, 5.9]] Binarized_Data = preprocessing.Binarizer(threshold=0.5).transform(X) print("\nThe Binarized data is:\n", Binarized_Data)

输出

它将产生以下输出:

The Binarized data is:
[[0. 0. 1.]
[1. 1. 0.]
[0. 1. 0.]
[0. 1. 1.]]

如何对稀疏矩阵进行二值化?

稀疏矩阵主要由零值组成,它们与所谓的稠密矩阵不同,稠密矩阵主要由非零值组成。稀疏矩阵之所以特殊,是因为为了节省内存空间,零值不会被存储。

我们可以使用 Scikit-learn 的preprocessing.binarize() 函数对稀疏矩阵进行二值化,但条件是阈值不能小于零。

示例 1

让我们来看一个示例来理解它:

# Import necessary libraries import sklearn from scipy.sparse import coo import numpy as np # Create sparse matrix sparse_matrix = coo.coo_matrix(np.random.binomial(1, .25, 50)) # Import sklearn preprocessing module from sklearn import preprocessing sparse_binarized = preprocessing.binarize(sparse_matrix, threshold=-1)

输出

它将产生阈值不能小于 0 的错误:

ValueError: Cannot binarize a sparse matrix with threshold < 0

示例 2

让我们来看一个阈值大于零的相同示例:

# Import necessary libraries import sklearn from scipy.sparse import coo import numpy as np # Create sparse matrix sparse_matrix = coo.coo_matrix(np.random.binomial(1, .25, 50)) # Import sklearn preprocessing module from sklearn import preprocessing sparse_binarized = preprocessing.binarize(sparse_matrix, threshold=0.8) print(sparse_binarized)

输出

它将产生以下输出:

(0, 5) 1
(0, 6) 1
(0, 9) 1
(0, 15) 1
(0, 25) 1
(0, 27) 1
(0, 29) 1
(0, 30) 1
(0, 31) 1

更新于:2022年10月4日

3K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告