如何使用 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+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告