Python 如何使用Scikit-learn将数据二值化

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程