python - 在测试文件上使用缩放数据
问题描述
我想在我的第一个数据文件(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)
解决方案
对于机器学习项目的最佳实践,典型的工作流程如下:
fit
与测试数据分离的训练数据的缩放器transform
训练数据(你已经用你的fit_transform
步骤做到了)transform
使用已安装的定标器*的测试数据。这可以防止您的训练和测试数据之间的任何数据泄漏transform
对任何其他验证或生产数据使用相同的拟合定标器* 。
*-注意,缩放器只存在于内存中,所以如果你想在另一个脚本中使用它,你可以使用类似pickle
或joblib
保存对象以供以后使用
您已经在上面的代码中正确完成了步骤 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)
推荐阅读
- ruby-on-rails - 如何获取模型中图像变体的 url(在控制器/视图之外)?主动存储
- javascript - 如何在 dc.js 中创建瀑布图
- apache-karaf - JBDS 11.3.0.GA - Fuse 生成的项目不起作用
- vue.js - 编译单个文件 vue.js 组件(*.vue):名称有问题(默认为 app.js)
- sonarqube - 我们在哪里可以获得 sonarqube 服务器版本的帮助页面以及内部版本号?
- java - 如何在 Java 中访问对象数组中的数据?
- r - httr post中的json数组
- android - 使用 JSON 解析用户数据
- swift - Moya:出现 -999(中止)错误
- symfony - webpack-require-http webpack encore symfony - 需要外部 js