詳解sklearn?Preprocessing?數(shù)據(jù)預處理功能
`scikit-learn`(或`sklearn`)的數(shù)據(jù)預處理模塊提供了一系列用于處理和準備數(shù)據(jù)的工具。這些工具可以幫助你在將數(shù)據(jù)輸入到機器學習模型之前對其進行預處理、清洗和轉換。以下是一些常用的`sklearn.preprocessing`模塊中的類和功能:
1. 數(shù)據(jù)縮放和中心化:
- `StandardScaler`: 將數(shù)據(jù)進行標準化,使得每個特征的均值為0,方差為1。
- `MinMaxScaler`: 將數(shù)據(jù)縮放到指定的最小值和最大值之間(通常是0到1)。
- `RobustScaler`: 對數(shù)據(jù)進行縮放,可以抵抗異常值的影響。
- `MaxAbsScaler`: 將數(shù)據(jù)按特征的絕對值最大縮放。
2. 類別特征編碼:
- `LabelEncoder`: 將類別變量編碼為整數(shù)標簽。
- `OneHotEncoder`: 將類別變量轉換為二進制編碼的多個列。
3. 缺失值處理:
- `SimpleImputer`: 使用均值、中位數(shù)、眾數(shù)等填充缺失值。
- `KNNImputer`: 使用最近鄰的值來填充缺失值。
4. 數(shù)據(jù)變換:
- `PolynomialFeatures`: 通過創(chuàng)建多項式特征擴展特征空間。
- `FunctionTransformer`: 通過自定義函數(shù)對數(shù)據(jù)進行轉換。
5. 數(shù)據(jù)分箱(Binning):
- `KBinsDiscretizer`: 將連續(xù)特征分成離散的箱子。
6. 正則化:
- `Normalizer`: 對樣本進行歸一化,使其具有單位范數(shù)。
7. 特征選擇:
- `SelectKBest`: 基于統(tǒng)計測試選擇排名前k個最好的特征。 - `RFE`(遞歸特征消除):逐步選擇特征,通過迭代來識別最重要的特征。
8. 數(shù)據(jù)流水線(Pipeline):
- `Pipeline`: 將多個數(shù)據(jù)預處理步驟和模型訓練步驟連接起來,以便更好地管理工作流程。
這些只是`sklearn.preprocessing`模塊中提供的一些常見功能。你可以根據(jù)數(shù)據(jù)和問題的特點選擇適合的預處理步驟來優(yōu)化機器學習模型的性能。要使用這些工具,你需要首先安裝`scikit-learn`庫,并在代碼中導入相應的類。
將每一列特征標準化為標準正太分布,注意,標準化是針對每一列而言的
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler from matplotlib improt gridspec import numpy as np import matpotlib.pyplot as plt
1)StandardScaler
cps = np.random.random_integers(0, 100, (100, 2)) # 創(chuàng)建StandardScaler 對象,再調用fit_transform 方法,傳入一個格式的參數(shù)數(shù)據(jù)作為訓練集. ss = StandardScaler() std_cps = ss.fit_transform(cps) gs = gridspec.GridSpec(5,5) fig = plt.figure() ax1 = fig.add_subplot(gs[0:2, 1:4]) ax2 = fig.add_subplot(gs[3:5, 1:4]) ax1.scatter(cps[:, 0], cps[:, 1]) ax2.scatter(std_cps[:, 0], std_cps[:, 1]) plt.show()
2) MinMaxScaler
MinMaxScaler:使得特征的分布在一個給定的最小值和最大值的范圍內.一般情況下載0`1之間(為了對付哪些標準差相當小的特征并保留下稀疏數(shù)據(jù)中的0值.)
min_max_scaler = preprocessing.MinMaxScaler() x_minmax = min_max_scaler.fit_transform(x)
3)MaxAbsCaler
MaxAbsScaler:數(shù)據(jù)會被規(guī)?;?1`1之間,就是特征中,所有數(shù)據(jù)都會除以最大值,該方法對哪些已經(jīng)中心化均值為0,或者稀疏的數(shù)據(jù)有意義.
max_abs_scaler = preprocessing.MaxAbsScaler() x_train_maxsbs = max_abs_scaler.fit_transform(x) x_train_maxsbs
4) 正則化Normalization
正則化是將樣本在向量空間模型上的一個轉換,常常被使用在分類和聚類中,使用函數(shù)normalize實現(xiàn)一個單向量的正則化功能.正則化化有I1,I2等
x_normalized = preprocessing.normalize(x, norm='l2') print(x)
5) 二值化
特征的二值化(指將數(shù)值型的特征數(shù)據(jù)轉換為布爾類型的值,使用實用類Binarizer),默認是根據(jù)0來二值化,大于0的都標記為1,小于等于0的都標記為0.通過設置threshold參數(shù)來更改該閾值
from sklearn import preprocessing import numpy as np # 創(chuàng)建一組特征數(shù)據(jù),每一行表示一個樣本,每一列表示一個特征 x = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]]) binarizer = preprocessing.Binarizer().fit(x) binarizer.transform(x) binarizer = preprocessing.Binarizer(threshold=1.5) binarizer.transform(x)
6) 為類別特征編碼
from sklearn import preprocessing enc = preprocessing.OneHotEncoder() enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) # fit來學習編碼 enc.transform([[0, 1, 3]]).toarray() # 進行編碼
7) 彌補缺失數(shù)據(jù)
import numpy as np from sklearn.preprocessing import Imputer imp = Imputer(missing_values='NaN', strategy='mean', axis=0) imp.fit domain name is for sale. Inquire now.([[1, 2], [np.nan, 3], [7, 6]]) x = [[np.nan, 2], [6, np.nan], [7, 6]] imp.transform(x)
Imputer類同樣也可以支持稀疏矩陣,以下例子將0作為了缺失值,為其補上均值
import scipy.sparse as sp # 創(chuàng)建一個稀疏矩陣 x = sp.csc_matrix([[1, 2], [0, 3], [7, 6]]) imp = Imputer(missing_values=0, strategy='mean', verbose=0) imp.fit domain name is for sale. Inquire now.(x) x_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]]) imp.transform(x_test)
到此這篇關于sklearn Preprocessing 數(shù)據(jù)預處理功能的文章就介紹到這了,更多相關sklearn Preprocessing 數(shù)據(jù)預處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!