适合 - 变换

Fit - Transform

我们在我接受机器学习培训的地方写了这样的代码。

我的问题是: 为什么我们在代码底部拟合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)

因为你的 X_train 是你训练的参考,如果你适合你的测试数据,它会泄露你如何转换训练数据的信息。

我想我不应该以任何方式使用测试数据,除非在模型训练结束时用于评估,因此测试数据不应该涉及任何拟合、缩放器或模型

但别担心,X_train 应该与 X_test 具有相同的分布,所以它会起作用...