Python之sklearn數(shù)據(jù)預(yù)處理中fit(),transform()與fit_transform()的區(qū)別
sklearn數(shù)據(jù)預(yù)處理中fit(),transform()與fit_transform()的區(qū)別
概述
注意這是數(shù)據(jù)預(yù)處理中的方法:
Fit(): Method calculates the parameters μ and σ and saves them as internal objects.
解釋:簡(jiǎn)單來說,就是求得訓(xùn)練集X的均值啊,方差啊,最大值啊,最小值啊這些訓(xùn)練集X固有的屬性。可以理解為一個(gè)訓(xùn)練過程
Transform(): Method using these calculated parameters apply the transformation to a particular dataset.
解釋:在Fit的基礎(chǔ)上,進(jìn)行標(biāo)準(zhǔn)化,降維,歸一化等操作(看具體用的是哪個(gè)工具,如PCA,StandardScaler等)。
Fit_transform(): joins the fit() and transform() method for transformation of dataset.
解釋:
fit_transform是fit和transform的組合,既包括了訓(xùn)練又包含了轉(zhuǎn)換。transform()和fit_transform()二者的功能都是對(duì)數(shù)據(jù)進(jìn)行某種統(tǒng)一處理(比如標(biāo)準(zhǔn)化~N(0,1),將數(shù)據(jù)縮放(映射)到某個(gè)固定區(qū)間,歸一化,正則化等)fit_transform(trainData)對(duì)部分?jǐn)?shù)據(jù)先擬合fit,找到該part的整體指標(biāo),如均值、方差、最大值最小值等等(根據(jù)具體轉(zhuǎn)換的目的),然后對(duì)該trainData進(jìn)行轉(zhuǎn)換transform,從而實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化等等。
根據(jù)對(duì)之前部分trainData進(jìn)行fit的整體指標(biāo),對(duì)剩余的數(shù)據(jù)(testData)使用同樣的均值、方差、最大最小值等指標(biāo)進(jìn)行轉(zhuǎn)換transform(testData),從而保證train、test處理方式相同。
所以,一般都是這么用:
from sklearn.preprocessing import StandardScaler sc = StandardScaler() sc.fit_tranform(X_train) sc.tranform(X_test)
Note:
- 必須先用fit_transform(trainData),之后再transform(testData)
- 如果直接transform(testData),程序會(huì)報(bào)錯(cuò)
- 如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),雖然也能歸一化,但是兩個(gè)結(jié)果不是在同一個(gè)“標(biāo)準(zhǔn)”下的,具有明顯差異。(一定要避免這種情況)
舉例
以PCA預(yù)處理,舉個(gè)栗子:
import pandas as pd import numpy as np ? from sklearn.decomposition import PCA? ? #========================================================================================== X1=pd.DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'], ? ? ? ? ? ? ? columns=['one','two','three']) ? ? pca=PCA(n_components=1) ? newData1=pca.fit_transform(X1) ? pca.fit(X1) newData12=pca.transform(X1) ? """ newData1和newData2結(jié)果一致 """ #========================================================================================== a=[[1,2,3],[5,6,7],[4,5,8]] ? X2=pd.DataFrame(np.array(a),index=['a','b','c'], ? ? ? ? ? ? ? columns=['one','two','three']) ? pca_new=PCA(n_components=1) pca_new.transform(X2) """ 沒有fit,直接transform報(bào)錯(cuò): NotFittedError: This PCA instance is not fitted yet. Call 'fit' with appropriate arguments before using this method. """
sklearn中歸一化的坑
This MinMaxScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
原因
歸一化時(shí),fit() 和transform() 兩個(gè)方法要分開.
sc_x = MinMaxScaler(feature_range=(0, 1)).fit(X) X=sc_x.transform(X)
sc_y = MinMaxScaler(feature_range=(0, 1)).fit(Y) Y = sc_y.transform(Y)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python基礎(chǔ)文件操作方法超詳細(xì)講解(詳解版)
文件就是操作系統(tǒng)為用戶或應(yīng)用程序提供的一個(gè)讀寫硬盤的虛擬單位,文件的核心操作就是讀和寫,這篇文章主要介紹了Python基礎(chǔ)文件操作方法超詳細(xì)講解的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
如何將python項(xiàng)目部署在一臺(tái)服務(wù)器上
服務(wù)器less技術(shù)是一種無需管理服務(wù)器即可運(yùn)行應(yīng)用程序的方法,最流行的服務(wù)器less平臺(tái)是AWS Lambda,這篇文章主要介紹了如何將python項(xiàng)目部署在一臺(tái)服務(wù)器上,需要的朋友可以參考下2023-10-10
PyQt5執(zhí)行耗時(shí)操作導(dǎo)致界面卡死或未響應(yīng)的原因及解決辦法
這篇文章主要給大家介紹了關(guān)于PyQt5執(zhí)行耗時(shí)操作導(dǎo)致界面卡死或未響應(yīng)的原因及解決辦法,由于耗時(shí)的操作會(huì)獨(dú)占系統(tǒng)cpu資源,讓界面卡死在那里,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
numpy 產(chǎn)生隨機(jī)數(shù)的幾種方法
本文主要介紹了numpy 產(chǎn)生隨機(jī)數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
pytorch?rpc實(shí)現(xiàn)分物理機(jī)器實(shí)現(xiàn)model?parallel的過程詳解
這篇文章主要介紹了pytorch?rpc實(shí)現(xiàn)分物理機(jī)器實(shí)現(xiàn)model?parallel的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
教你用python實(shí)現(xiàn)一個(gè)無界面的小型圖書管理系統(tǒng)
今天帶大家學(xué)習(xí)怎么用python實(shí)現(xiàn)一個(gè)無界面的小型圖書管理系統(tǒng),文中有非常詳細(xì)的圖文解說及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式
這篇文章主要介紹了pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12

