網站首頁 編程語言 正文
Python之sklearn數據預處理中fit(),transform()與fit_transform()的區別_python
作者:anshuai_aw1 ? 更新時間: 2023-03-29 編程語言sklearn數據預處理中fit(),transform()與fit_transform()的區別
概述
注意這是數據預處理中的方法:
Fit(): Method calculates the parameters μ and σ and saves them as internal objects.
解釋:簡單來說,就是求得訓練集X的均值啊,方差啊,最大值啊,最小值啊這些訓練集X固有的屬性。可以理解為一個訓練過程
Transform(): Method using these calculated parameters apply the transformation to a particular dataset.
解釋:在Fit的基礎上,進行標準化,降維,歸一化等操作(看具體用的是哪個工具,如PCA,StandardScaler等)。
Fit_transform(): joins the fit() and transform() method for transformation of dataset.
解釋:
-
fit_transform
是fit和transform的組合,既包括了訓練又包含了轉換。 -
transform()
和fit_transform()二者的功能都是對數據進行某種統一處理(比如標準化~N(0,1),將數據縮放(映射)到某個固定區間,歸一化,正則化等) -
fit_transform(trainData)
對部分數據先擬合fit,找到該part的整體指標,如均值、方差、最大值最小值等等(根據具體轉換的目的),然后對該trainData進行轉換transform,從而實現數據的標準化、歸一化等等。
根據對之前部分trainData進行fit的整體指標,對剩余的數據(testData)使用同樣的均值、方差、最大最小值等指標進行轉換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),程序會報錯
- 如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),雖然也能歸一化,但是兩個結果不是在同一個“標準”下的,具有明顯差異。(一定要避免這種情況)
舉例
以PCA預處理,舉個栗子:
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結果一致 """ #========================================================================================== 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報錯: 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.
原因?
歸一化時,fit() 和transform() 兩個方法要分開.
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)
總結
原文鏈接:https://blog.csdn.net/anshuai_aw1/article/details/82498374
相關推薦
- 2022-05-15 react底層的四大核心內容架構詳解_React
- 2022-07-18 Linux 文件內容瀏覽;cut命令;uniq命令;sort命令;tr命令;
- 2022-10-14 C++ STL - list 模擬實現+解析迭代器
- 2022-10-13 Python?變量教程之打包和解包參數_python
- 2022-08-10 c#實現哈夫曼樹算法_C#教程
- 2023-02-02 C#實現SMTP服務發送郵件的示例代碼_C#教程
- 2022-10-22 Python?NumPy教程之數組的創建詳解_python
- 2024-02-01 啟動jar報錯(文件名、目錄名或卷標語法不正確。)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支