如何使用Python Scikit-learn将数据二值化?
二值化 是一种预处理技术,用于将数据转换为二进制数,即将数据二值化。 Scikit-learn函数名为 Sklearn.preprocessing.binarize() 用于将数据二值化。
此二值化函数具有阈值参数,小于或等于此阈值值的特征值将被替换为0,大于它的值将被替换为1。
在本教程中,我们将学习如何使用Python中的Scikit-learn(Sklearn)对数据和稀疏矩阵进行二值化处理。
示例
让我们看一个示例,其中我们将numpy数组预处理为二进制数−
#导入必要的包
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.]]
如何将稀疏矩阵二值化?
稀疏矩阵由大部分零值组成,它们与由大部分非零值组成的所谓密矩阵不同。Spare矩阵非常特殊,因为为了节省内存空间,零值未存储。
我们可以使用Scikit-learn preprocessing.binarize() 函数对稀疏矩阵进行二值化,但条件是阈值值不能小于零。
示例1
让我们看一个示例来理解它−
# 导入必要的库
import sklearn
from scipy.sparse import coo
import numpy as np
#创建稀疏矩阵
sparse_matrix = coo.coo_matrix(np.random.binomial(1, .25, 50))
#导入sklearn预处理模块
from sklearn importpreprocessing
sparse_binarized = preprocessing.binarize(sparse_matrix, threshold=-1)
输出
它将显示错误,即阈值值不能小于0−
ValueError: Cannot binarize a sparse matrix with threshold < 0
示例2
让我们看一个具有大于零阈值值的相同示例−
# 导入必要的库
import sklearn
from scipy.sparse import coo
import numpy as np
# 创建稀疏矩阵
sparse_matrix = coo.coo_matrix(np.random.binomial(1, .25, 50))
# 导入sklearn的预处理模块
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