首页 > 解决方案 > 在 Python 中拟合正弦余弦曲线

问题描述

我正在尝试从 R 过渡到 Python 以进行时间序列分析 - 但我发现它很难。下面的代码是我在 R 中使用的 - 将正弦曲线回归到具有已知周期的某些数据上。

year <- c(0:100)
lm(data~sin(2*pi*year/15)+cos(2*pi*year/15))

现在我想在 Python 中做同样的事情我遇到了很长的方法,包括进行初始猜测然后优化等。实现可比结果的最简单方法是什么?

标签: pythonregressionnon-linear-regression

解决方案


我没有得到你正在寻找的东西,lm 意思是线性模型,你可以在 sklearn 中尝试线性回归,如下所示:

    import numpy as np
    from sklearn.linear_model import LinearRegression
    import matplotlib.pyplot as plt

    year        = np.arange(0, 100, 1)
    year = np.reshape(year, (1, -1))
    year_predict        = np.arange(100, 200, 1)
    year_predict        = np.reshape(year_predict, (1, -1))

    y   = np.sin(2*np.pi*year/15)+np.cos(2*np.pi*year/15)
    lm = LinearRegression()
    lm.fit(year, y)

    y_pred = lm.predict(year_predict)

    plt.plot(year[0,:], y[0,:])
    plt.plot(year_predict[0,:], y_pred[0,:])
    plt.ylabel('np.sin(2*pi*year/15)+np.cos(2*pi*year/15)')
    plt.show()

您可以在此处找到更多信息:https ://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

如果您有不清楚的地方,请写在这里。我们可以帮助你


推荐阅读