在测试文件上使用缩放数据

时间:2019-06-05 14:40:46

标签: python pandas scikit-learn

我想在我的第一个文件(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

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

 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)

1 个答案:

答案 0 :(得分:0)

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

  1. fit缩放器,将训练数据与测试数据分开
  2. transform训练数据(您已经在fit_transform步骤中完成了此操作)
  3. transform使用已经安装的缩放器*测试数据。这样可以防止训练和测试数据之间出现任何data leakage
  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)