Scikit-learn是Python中最流行的機器學習庫之一,其提供了各種預處理工具,使得我們能夠更高效地對數據進行處理和分析。在本文中,我們將重點介紹其中的一個重要模塊:sklearn.preprocessing。
一、特徵標準化
特徵標準化是預處理數據的重要步驟。很多機器學習算法都需要將數據標準化後才能更好地進行訓練和分類。使用sklearn.preprocessing的StandardScaler類可以方便地實現這個過程。
下面是一個使用StandardScaler類對數據進行特徵標準化的實例。
from sklearn import preprocessing
import numpy as np
# 創建特徵矩陣
features = np.array([
[-100.1, 3240.1],
[-200.2, -234.1],
[5000.5, 150.1],
[6000.6, -125.1],
[9000.9, -673.1]
])
# 創建縮放器
scaler = preprocessing.StandardScaler()
# 特徵標準化
features_standardized = scaler.fit_transform(features)
# 打印特徵矩陣
print("原始特徵矩陣:\n", features)
print("標準化特徵矩陣:\n", features_standardized)
這段代碼中,我們首先創建了一個5×2的特徵矩陣,然後使用StandardScaler類對特徵進行標準化。標準化後的特徵矩陣是5×2的矩陣,均值為0,方差為1。
二、特徵縮放
特徵縮放是指將特徵的取值縮放到一個更小的範圍內,有時候我們需要將特徵縮放到一定的範圍,比如[0,1]或[-1,1]。使用sklearn.preprocessing的MinMaxScaler類可以幫助我們輕鬆實現特徵縮放。
下面是一個使用MinMaxScaler類對數據進行特徵縮放的實例。
from sklearn.preprocessing import MinMaxScaler
import numpy as np
# 創建特徵矩陣
features = np.array([
[100.1, 2000.2],
[900.9, 4000.4],
[700.7, 6000.6],
[500.5, 8000.8],
[300.3, 10000.10]
])
# 創建縮放器
scaler = MinMaxScaler(feature_range=(0, 1))
# 特徵縮放
features_scaled = scaler.fit_transform(features)
# 打印特徵矩陣
print("原始特徵矩陣:\n", features)
print("縮放特徵矩陣:\n", features_scaled)
在上面的代碼中,我們創建了一個特徵矩陣,然後使用MinMaxScaler類對特徵進行縮放。在這個例子中,我們將特徵縮放到[0,1]之間。結果表明,特徵矩陣中的數據已經按照[0,1]的範圍重新縮放了。
三、離散化數據
離散化是將連續型變量離散化為離散的數值變量的過程。使用sklearn.preprocessing的KBinsDiscretizer類可以幫助我們輕鬆實現離散化的過程。
下面是一個使用KBinsDiscretizer類對數據進行離散化的實例。
from sklearn.preprocessing import KBinsDiscretizer
import numpy as np
# 創建特徵矩陣
features = np.array([
[1.1],
[2.2],
[3.3],
[4.4],
[5.5],
[6.6],
[7.7]
])
# 創建離散化器
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
# 離散化特徵矩陣
features_discretized = est.fit_transform(features)
# 展示特徵矩陣
print("原始特徵矩陣:\n", features)
print("離散化後的特徵矩陣:\n", features_discretized)
在上面的代碼中,我們首先創建了一個特徵矩陣,然後使用KBinsDiscretizer類對特徵進行離散化。在這個例子中,我們將特徵矩陣分成了3組。
四、檢測與過濾異常值
檢測與過濾異常值是預處理數據的重要步驟。異常值對數據分析和建模過程會產生負面影響。使用sklearn.preprocessing的RobustScaler類可以幫助我們輕鬆實現異常值檢測和過濾。
下面是一個使用RobustScaler類對數據進行特徵縮放的實例。
from sklearn.preprocessing import RobustScaler
import numpy as np
# 創建特徵矩陣
features = np.array([
[100.1],
[900.9],
[700.7],
[500.5],
[400.4],
[1500.5]
])
# 創建縮放器
scaler = RobustScaler()
# 縮放特徵矩陣
features_standardized = scaler.fit_transform(features)
# 輸出特徵矩陣
print("原始特徵矩陣:\n", features)
print("縮放特徵矩陣:\n", features_standardized)
在上面的代碼中,我們首先創建了一個特徵矩陣,然後使用RobustScaler類對特徵進行縮放。
五、標準化稀疏矩陣數據
在實際的數據處理和分析中,我們有時會面臨處理大規模稀疏矩陣數據的情況。使用sklearn.preprocessing的scale函數可以方便地實現稀疏矩陣的標準化。
下面是一個使用scale函數對稀疏矩陣進行標準化的實例。
from scipy import sparse
from sklearn.preprocessing import scale
# 創建稀疏矩陣
features = sparse.csr_matrix([
[1.0, 2.0],
[3.0, 4.0],
[5.0, 6.0]
])
# 標準化稀疏矩陣
features_standardized = scale(features, with_mean=False)
# 輸出特徵矩陣
print("原始特徵矩陣:\n", features.toarray())
print("標準化特徵矩陣:\n", features_standardized.toarray())
在上面的代碼中,我們首先創建了一個稀疏矩陣,然後使用scale函數對其進行標準化。
原創文章,作者:BAAID,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/334626.html
微信掃一掃
支付寶掃一掃