我們在我接受過機器學習培訓的地方撰寫了這樣的代碼。
我的問題是:為什么我們在代碼底部擬合 X_train 時不擬合就轉換 X_test?
hit = pd.read_csv("./xxx/xxx.csv")
df = hit.copy()
df = df.dropna()
y = df["Salary"]
X_ = df.drop(["Salary","League","Division","NewLeague"],axis=1).astype("float64")
dms = pd.get_dummies(df[["League","Division","NewLeague"]])
X = pd.concat([X_ , dms[["League_N","Division_W","NewLeague_N"]]],axis=1)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=42)
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
uj5u.com熱心網友回復:
因為您的 X_train 是您訓練的參考,所以如果您適合您的測驗資料,它會泄露有關您如何轉換訓練資料的資訊。
我喜歡認為我不應該以任何方式使用測驗資料,除非在模型訓練結束時進行評估,所以測驗資料不應該參與任何擬合、縮放或模型
但別擔心,X_train 應該與 X_test 具有相同的分布,所以它會起作用......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475295.html
