在 sklearn 中计算管道逻辑回归 predict_proba

Posted

技术标签:

【中文标题】在 sklearn 中计算管道逻辑回归 predict_proba【英文标题】:Computing Pipeline logistic regression predict_proba in sklearn 【发布时间】:2017-07-21 10:39:40 【问题描述】:

我有一个包含 3 个特征和 3 个类的数据框,我将它们分成 X_train、Y_train、X_test 和 Y_test,然后使用 PCA、StandardScaler 和 Logistic Regression 运行 Sklearn 的管道。我希望能够在不使用 predict_proba 的情况下直接从 LR 权重和原始数据计算概率,但不知道如何,因为我不确定管道如何通过 PCA 和 StandardScaler 将 X_test 管道传输到逻辑回归。如果不能使用 PCA 和 StandardScaler 的拟合方法,这是否现实?任何帮助将不胜感激!

到目前为止,我有:

pca = PCA(whiten=True)
scaler = StandardScaler()
logistic = LogisticRegression(fit_intercept = True, class_weight = 'balanced', solver = sag, n_jobs = -1, C = 1.0, max_iter = 200)

pipe = Pipeline(steps = [ ('pca', pca), ('scaler', scaler), ('logistic', logistic) ]

pipe.fit(X_train, Y_train)

predict_probs = pipe.predict_proba(X_test)

coefficents = pipe.steps[2][1].coef_ (3 by 30)
intercepts = pipe.steps[2][1].intercept_ (1 by 3)

【问题讨论】:

X_train 和 X_test 必须经过完全相同的转换才能使预测结果正确。使用pipe.predict_proba(X_test)有什么问题? 如果您担心在pipe,如果您发送X_testpcascaler 将再次适合然后别担心。只有transform 会在其中被调用,predict_probaslogistic 上会被调用。 pipe.predict_proba(X_test) 的问题是新的测试数据将实时手动输入,所以我想我只需要一种方法来进行转换。当 PCA 和 scaler 转换 X_test 时,它只是使用来自 X_train 的拟合参数,对吧? 是的。管道的行为类似于任何其他估算器。你 fit 在训练数据上,只在测试数据上调用 predicttransform。当您在管道上调用 predict_proba 时,除最后一个之外的所有估计器将仅调用 transform,然后进一步传递数据。最后一个会打电话给predict_proba 【参考方案1】:

这也是我想不通的问题,感谢库马尔的回答。 我认为管道会导致 x_test 的新转换,但是当我尝试运行由 StandardScalarLogisticRegression 组成的 Pipeline >,并使用 StandardScalarLogisticRegression 运行我自己定义的函数,我发现 Pipeline 实际上使用了 transformx_train 安装。所以不用担心使用管道,它确实是一个方便实用的机器学习工具!

【讨论】:

以上是关于在 sklearn 中计算管道逻辑回归 predict_proba的主要内容,如果未能解决你的问题,请参考以下文章

获取 sklearn 逻辑回归的边际效应

详解逻辑回归与评分卡-逻辑回归中的特征工程菜菜的sklearn课堂笔记

逻辑回归推导

增加sklearn逻辑回归拟合能力的解决方案

增加sklearn逻辑回归拟合能力的解决方案

如何在sklearn逻辑回归中设置样本权重?