问题上下文
在Python中使用scikit-learn
,我尝试将二次多项式曲线拟合到一组数据,因此模型的形式为y = a2x^2 + a1x + a0
,并且an
系数将由模型提供。
问题
我不知道如何使用该软件包拟合多项式曲线,而且似乎很少有关于如何做到这一点的明确参考(我已经找了一段时间)。我看过this question on doing something similar with NumPy,还有this question which does a more complicated fit than I require。
一个好的解决方案应该是什么样子
希望,一个好的解决方案会像这样(示例改编自我使用的线性拟合代码):
x = my_x_data.reshape(len(profile), 1)
y = my_y_data.reshape(len(profile), 1)
regression = linear_model.LinearRegression(degree=2) # or PolynomialRegression(degree=2) or QuadraticRegression()
regression.fit(x, y)
我想scikit-learn
应该有这样的功能,因为它很常见(例如,在R
中,可以在代码中提供拟合公式,并且它们应该能够在这种用例中互换)。
问题:
什么是一个好的方法来做到这一点,或者我可以在哪里找到有关如何正确地做到这一点的信息?
4条答案
按热度按时间7nbnzgx91#
可能重复:https://stats.stackexchange.com/questions/58739/polynomial-regression-using-scikit-learn。
出于某种原因,使用scikit-learn来完成这一点是否至关重要?你想要的操作可以很容易地使用numpy执行:
之后,
z(x)
返回x
处的拟合值。一个scikit-learn解决方案几乎可以肯定只是一个 Package 器,围绕着相同的代码。
gstyhher2#
我相信萨尔瓦多达利here的回答会回答你的问题。在scikit-learn中,从数据中构造多项式特征就足够了,然后在扩展的数据集上运行线性回归。如果您有兴趣阅读一些关于它的文档,您可以在这里找到更多信息。为了方便起见,我将发布萨尔瓦多达利提供的示例代码:
kt06eoxx3#
AGML的答案可以 Package 在scikit-learn兼容的类中,如下所示:
gmxoilav4#
下面是如何在一个整洁的管道中完成它