首页 > 解决方案 > 在测试文件上使用缩放数据

问题描述

我想在我的第一个数据文件(F1)上拟合逻辑回归模型,我想在另一个名为 F2 的文件上测试它(另一年的相同练习)。F1上的代码:

   sc = preprocessing.StandardScaler()
   X_train = sc.fit_transform(X_train)
   X_test =  sc.transform(X_test) 
   logistic = LogisticRegression(random_state =0,max_iter = 300 ,penalty = 'l2')
   model = logistic.fit(X,y)
   ScaledObj = X_train

我该怎么做才能在我的测试文件中使用缩放数据?我这样做了,但我不知道如何在我的文件测试(F2)的测试代码中使用ScaledObj

 F2 = pd.read_csv("F2.csv", sep =',')
 y_test = F2['y']
 X_test = F2.copy()
 del X_test['y']
 y_pred = model.predict(X_test)
 proba= model.predict_proba(X_test)[:, 1]
 Auc_Test = metrics.roc_auc_score(y_test, proba)

标签: pythonpandasscikit-learn

解决方案


对于机器学习项目的最佳实践,典型的工作流程如下:

  1. fit与测试数据分离的训练数据的缩放器
  2. transform训练数据(你已经用你的fit_transform步骤做到了)
  3. transform使用已安装的定标器*的测试数据。这可以防止您的训练和测试数据之间的任何数据泄漏
  4. transform对任何其他验证或生产数据使用相同的拟合定标器* 。

*-注意,缩放器只存在于内存中,所以如果你想在另一个脚本中使用它,你可以使用类似picklejoblib保存对象以供以后使用

您已经在上面的代码中正确完成了步骤 1-3,您可以以相同的方式执行步骤 4。但是,我建议的一件事是不要覆盖您的变量,因为这在以后阅读代码时可能会造成混淆。

F2 = pd.read_csv("F2.csv", sep =',')
y_test1 = F2['y']
X_test1 = F2.copy()
del X_test1['y']

#add this line, same as you did before
X_test1 =  sc.transform(X_test1)

y_pred = model.predict(X_test1)

推荐阅读