[英]Using fit_transform() and transform()
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
我所知道的是fit()
方法計算特征的均值和標准差,然后transform()
方法使用它們將特征轉換為新的縮放特征。 fit_transform()
只不過是在一行中調用fit()
和transform()
方法。
但是這里為什么我們只為訓練數據調用fit()
而不是測試數據呢?
這是否意味着我們正在使用訓練數據的均值和標准差來轉換我們的測試數據?
fit
計算用於以后縮放的平均值和標准差,注意它只是一個沒有縮放的計算。
transform
使用先前計算的均值和標准差來縮放數據(從所有值中減去均值,然后除以標准差)。
fit_transform
同時進行。 因此,您只需 1 行代碼即可完成。
對於X_train
數據集,我們做fit_transform
因為我們需要計算均值和標准差,然后用它來縮放X_train
數據集。 對於X_test
數據集,由於我們已經有了均值和標准差,我們只做轉換部分。
編輯: X_test
數據應該是完全看不見和未知的(即,沒有從中提取信息),所以我們只能從X_train
中獲取信息。 我們應用派生均值和標准差(來自X_train
)來轉換X_test
的原因是對y_test
和y_pred
進行相同的“蘋果對蘋果”比較。
順便說一句,如果訓練/測試數據被正確分割而沒有偏差,並且數據足夠大,那么兩個數據集對總體均值和標准差的近似值將相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.