Python 如何使用Scikit-learn将数据二值化
二值化 是一种预处理技术,用于将数据转化为二进制数,即需要将数据进行二值化时使用。Scikit-learn库中的函数 Sklearn.preprocessing.binarize() 用于将数据二值化。
该二值化函数具有阈值参数,小于等于该阈值的特征值将被替换为0,大于该阈值的特征值将被替换为1。
在本教程中,我们将学习如何使用Scikit-learn(Sklearn)在Python中对数据和稀疏矩阵进行二值化。
示例
让我们看一个示例,将一个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