詳解sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能
`scikit-learn`(或`sklearn`)的數(shù)據(jù)預(yù)處理模塊提供了一系列用于處理和準(zhǔn)備數(shù)據(jù)的工具。這些工具可以幫助你在將數(shù)據(jù)輸入到機(jī)器學(xué)習(xí)模型之前對(duì)其進(jìn)行預(yù)處理、清洗和轉(zhuǎn)換。以下是一些常用的`sklearn.preprocessing`模塊中的類和功能:
1. 數(shù)據(jù)縮放和中心化:
- `StandardScaler`: 將數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,使得每個(gè)特征的均值為0,方差為1。
- `MinMaxScaler`: 將數(shù)據(jù)縮放到指定的最小值和最大值之間(通常是0到1)。
- `RobustScaler`: 對(duì)數(shù)據(jù)進(jìn)行縮放,可以抵抗異常值的影響。
- `MaxAbsScaler`: 將數(shù)據(jù)按特征的絕對(duì)值最大縮放。
2. 類別特征編碼:
- `LabelEncoder`: 將類別變量編碼為整數(shù)標(biāo)簽。
- `OneHotEncoder`: 將類別變量轉(zhuǎn)換為二進(jìn)制編碼的多個(gè)列。
3. 缺失值處理:
- `SimpleImputer`: 使用均值、中位數(shù)、眾數(shù)等填充缺失值。
- `KNNImputer`: 使用最近鄰的值來(lái)填充缺失值。
4. 數(shù)據(jù)變換:
- `PolynomialFeatures`: 通過創(chuàng)建多項(xiàng)式特征擴(kuò)展特征空間。
- `FunctionTransformer`: 通過自定義函數(shù)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
5. 數(shù)據(jù)分箱(Binning):
- `KBinsDiscretizer`: 將連續(xù)特征分成離散的箱子。
6. 正則化:
- `Normalizer`: 對(duì)樣本進(jìn)行歸一化,使其具有單位范數(shù)。
7. 特征選擇:
- `SelectKBest`: 基于統(tǒng)計(jì)測(cè)試選擇排名前k個(gè)最好的特征。 - `RFE`(遞歸特征消除):逐步選擇特征,通過迭代來(lái)識(shí)別最重要的特征。
8. 數(shù)據(jù)流水線(Pipeline):
- `Pipeline`: 將多個(gè)數(shù)據(jù)預(yù)處理步驟和模型訓(xùn)練步驟連接起來(lái),以便更好地管理工作流程。
這些只是`sklearn.preprocessing`模塊中提供的一些常見功能。你可以根據(jù)數(shù)據(jù)和問題的特點(diǎn)選擇適合的預(yù)處理步驟來(lái)優(yōu)化機(jī)器學(xué)習(xí)模型的性能。要使用這些工具,你需要首先安裝`scikit-learn`庫(kù),并在代碼中導(dǎo)入相應(yīng)的類。
將每一列特征標(biāo)準(zhǔn)化為標(biāo)準(zhǔn)正太分布,注意,標(biāo)準(zhǔn)化是針對(duì)每一列而言的
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 對(duì)象,再調(diào)用fit_transform 方法,傳入一個(gè)格式的參數(shù)數(shù)據(jù)作為訓(xùn)練集. 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:使得特征的分布在一個(gè)給定的最小值和最大值的范圍內(nèi).一般情況下載0`1之間(為了對(duì)付哪些標(biāo)準(zhǔn)差相當(dāng)小的特征并保留下稀疏數(shù)據(jù)中的0值.)
min_max_scaler = preprocessing.MinMaxScaler() x_minmax = min_max_scaler.fit_transform(x)
3)MaxAbsCaler
MaxAbsScaler:數(shù)據(jù)會(huì)被規(guī)?;?1`1之間,就是特征中,所有數(shù)據(jù)都會(huì)除以最大值,該方法對(duì)哪些已經(jīng)中心化均值為0,或者稀疏的數(shù)據(jù)有意義.
max_abs_scaler = preprocessing.MaxAbsScaler() x_train_maxsbs = max_abs_scaler.fit_transform(x) x_train_maxsbs
4) 正則化Normalization
正則化是將樣本在向量空間模型上的一個(gè)轉(zhuǎn)換,常常被使用在分類和聚類中,使用函數(shù)normalize實(shí)現(xiàn)一個(gè)單向量的正則化功能.正則化化有I1,I2等
x_normalized = preprocessing.normalize(x, norm='l2') print(x)
5) 二值化
特征的二值化(指將數(shù)值型的特征數(shù)據(jù)轉(zhuǎn)換為布爾類型的值,使用實(shí)用類Binarizer),默認(rèn)是根據(jù)0來(lái)二值化,大于0的都標(biāo)記為1,小于等于0的都標(biāo)記為0.通過設(shè)置threshold參數(shù)來(lái)更改該閾值
from sklearn import preprocessing import numpy as np # 創(chuàng)建一組特征數(shù)據(jù),每一行表示一個(gè)樣本,每一列表示一個(gè)特征 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來(lái)學(xué)習(xí)編碼 enc.transform([[0, 1, 3]]).toarray() # 進(jìn)行編碼
7) 彌補(bǔ)缺失數(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作為了缺失值,為其補(bǔ)上均值
import scipy.sparse as sp # 創(chuàng)建一個(gè)稀疏矩陣 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)
到此這篇關(guān)于sklearn Preprocessing 數(shù)據(jù)預(yù)處理功能的文章就介紹到這了,更多相關(guān)sklearn Preprocessing 數(shù)據(jù)預(yù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python PyQt5學(xué)習(xí)之樣式設(shè)置詳解
這篇文章主要為大家詳細(xì)介紹了Python PyQt5中樣式設(shè)置的相關(guān)資料,例如為標(biāo)簽添加背景圖片、為按鈕添加背景圖片、設(shè)置窗口透明等,感興趣的可以學(xué)習(xí)一下2022-12-12Python Django框架單元測(cè)試之文件上傳測(cè)試示例
這篇文章主要介紹了Python Django框架單元測(cè)試之文件上傳測(cè)試,結(jié)合實(shí)例形式分析了Django框架單元測(cè)試中文件上傳測(cè)試的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05Python3 入門教程 簡(jiǎn)單但比較不錯(cuò)
Python已經(jīng)是3.1版本了,與時(shí)俱進(jìn)更新教程.2.5或2.6請(qǐng)看上一篇文章。2009-11-11Python中Parser的超詳細(xì)用法實(shí)例
Parser模塊為Python的內(nèi)部解析器和字節(jié)碼編譯器提供了一個(gè)接口,該接口的主要目的是允許Python代碼編輯Python表達(dá)式的分析樹并從中創(chuàng)建可執(zhí)行代碼,這篇文章主要給大家介紹了關(guān)于Python中Parser超詳細(xì)用法的相關(guān)資料,需要的朋友可以參考下2022-07-07