问题背景
使用Python的scikit-learn
,我试图对一组数据进行二次多项式曲线拟合,使模型的形式为y = a2x^2 + a1x + a0
,其中an
系数由模型提供。
问题描述
我不知道如何使用该软件包进行多项式曲线拟合,并且似乎关于如何操作的清晰参考资料非常少(我已经寻找了一段时间)。我看到了这个关于使用NumPy进行类似操作的问题,以及这个比我需要的更复杂的拟合问题。
理想的解决方案
希望一个好的解决方案会像这样(样本改编自我正在使用的线性拟合代码):
x = my_x_data.reshape(len(profile), 1)y = my_y_data.reshape(len(profile), 1)regression = linear_model.LinearRegression(degree=2) # 或者PolynomialRegression(degree=2) 或者 QuadraticRegression()regression.fit(x, y)
我认为scikit-learn
应该有这样的功能,因为这很常见(例如,在R
中,可以在代码中提供拟合公式,对于这种用例,它们应该可以互换使用)。
问题:
有什么好的方法来实现这一点,或者我可以在哪里找到关于如何正确操作的信息?
回答:
可能的重复问题:https://stats.stackexchange.com/questions/58739/polynomial-regression-using-scikit-learn。
出于某种原因,使用scikit-learn来完成这个操作是否至关重要?你想要的操作可以使用numpy非常容易地完成:
z = np.poly1d(np.polyfit(x,y,2))
之后,z(x)
会返回x
处的拟合值。
scikit-learn的解决方案几乎肯定只是对相同代码的包装。