如何使用 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
广告