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