如何在 Python/Scikit Learn 中转换输入的结构回归

Posted

技术标签:

【中文标题】如何在 Python/Scikit Learn 中转换输入的结构回归【英文标题】:How to structure regression where input is transformed in Python/Scikit Learn 【发布时间】:2020-05-06 02:02:57 【问题描述】:

我正在尝试将 Excel 模型转换为 Python。模型设置如下:

1 - 有 3 列 A、B、C 包含输入变量(列 F 包含目标变量)。我们想了解 A、B 和 C 列中这些值的逻辑函数中的系数。

2 - 这些列通过逻辑函数组合,其输出在 D 列中。

3 - E 列然后保存 D 列的 Z 分数。

4 - 最后,E 列对 D 列的 Z 分数进行线性变换。

这是通过求解器插件在 Excel 中设置的,它可以找到 A、B、C 的系数,这些系数导致 E 列与 F 列的误差平方和最小。我想知道你是如何设置的Python/scikit-learn/Statsmodels/其他python包中有这样的东西吗?

这一系列方程基本上是这样的:

1 / (1 + e^-(A + B + C)) -> X
z_score(X)*CONSTANT1 + CONSTANT2 -> estimate

CONSTANT1CONSTANT2 是预先知道的。

目标是最小化estimate 和 y 之间的平方误差。

我之前在 scikit 中运行过回归,我只是调用 model.fit(X, y),其中 X 是一些输入变量序列,y 是目标输出变量。但是 Excel 模型中的步骤顺序似乎不适合简​​单的model.fit 调用。我希望我可以用 Python/Scikit 编写来完成此操作的代码如下所示:model.fit(z_score(logistic(A + B + C))*CONSTANT1 + CONSTANT2, y) 但我认为这种事情在我所知道的任何 Python 包中都不合法(因为 scikit 想要第一个参数model.fit 为数字。

我正在尝试做的事情可能吗?另外,这种类型的回归分析叫什么?我什至不知道用什么谷歌来获取更多信息。

【问题讨论】:

【参考方案1】:

如果你想在 python + sk-learn 中做到这一点,你应该使用常规的拟合/预测方式。 LogisticRegression 类具有您可以返回的属性,例如 LogisticRegression.coef_ 它返回决策函数中特征的系数。

AFAIK,sk-learn 无法返回 z_scores,因为它并不真正支持统计推断(因为它是机器学习包,而不是统计包)。如果您确实需要 Logistic 回归的统计元素,则使用 Statsmodels 可能会更好。查看This 问题以获取更多信息。

希望对你有所帮助

【讨论】:

z_score 在这里被用作另一个方程的输入。整个事情是这样设置的:logistic_function(A + B + C) 产生 X。X 的 Z 分数 * 常数 1 + 常数 2 = 估计。我想要的是能够建立一个回归,找到 A、B 和 C 的最佳值,以最小化估计和目标之间的误差。我想我只是要编辑我的问题以使其更清楚。

以上是关于如何在 Python/Scikit Learn 中转换输入的结构回归的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python scikit-learn 中更改精度和召回的阈值?

如何在 python Scikit-learn 中获得凝聚聚类“质心”

如何在 Python/Scikit Learn 中转换输入的结构回归

python - 如何在python scikit-learn中进行字典向量化后预测单个新样本?

如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?

如何在 python scikit-learn 中优化精确召回曲线而不是 AUC-ROC 曲线?