如何在Python中进行多元非线性回归?

时间:2019-04-29 20:44:46

标签: python python-3.x

假设我的实际方程是y = a * b + c

所以我的数据集看起来像

brew info opencv
or
brew info opencv3
(depending on how you installed it)

等等。我要使用哪个模块才能获得告诉我“ y = a * b + c”的输出?这有可能吗?

y = a * a + b怎么样?任何指向文档或我应该尝试的解释的指针都很棒。

编辑:

重复显然是不同的情况。在该示例中,有一个描述直线的公式;在我的示例中,很多变量都适合结果。另一个人不谈论平方项。

2 个答案:

答案 0 :(得分:1)

没有模块。您的一般问题是“最简单的函数最适合此数据?”没有通用的解决方案,因为“简单”需要适当的定义和限制才能得出有意义的答案。

代数的一个基本定理表明,N个点上的数据集可以由不超过N-1的次数多项式拟合。要限制更多,就需要定义搜索空间并在该定义内进行浏览。

是的,存在设置最大程度并在其中工作的方法。您可以编写循环以提高该程度,直到找到确切的解决方案为止。

我建议您研究Scikit的曲线拟合方法,并将其应用于自己的设计解决方案中。您可能需要遍历所选学位的所有组合,每次增加学位时都添加新术语。您可能还需要编写探索工具,以定义的复杂性顺序考虑这些术语。


对OP评论的回复:

我明白了;您一定会遵循FiveThirtyEight.com的足迹,该足迹以棒球运动和美国大选的准确性着称。根据所需的精度,此问题会很快变得很棘手。您将获得诸如((MY_OFF-OPP_DEF) ^ 1.28 + 2.1 - sqrt(OPP_GK)) / BLAH之类的字词。

在任何情况下,您都可能会进入深度学习回归应用程序,该应用程序比“简单的”产品总和方案更为复杂。使用“纯粹的”机器学习可能会获得可接受的结果,但是即使对于预测获胜者这一较简单的任务也要感到失望。

答案 1 :(得分:1)

您是否考虑过尝试scikit-learn Gradient Boosting Regressor?请参阅code examples的用户指南,了解如何在回归问题上使用此方法。

还请注意,文档指出

scikit-learn 0.21引入了两个新的实验实现 梯度增强树,即HistGradientBoostingClassifier和 受LightGBM启发的HistGradientBoostingRegressor。这些 基于直方图的估计量可能比数量级要快几个数量级 GradientBoostingClassifier和GradientBoostingRegressor何时 样本数量大于成千上万。