我有一组数据,其中经度和纬度是自变量,温度是因变量。我希望能够执行外推以获取超出经纬度范围的温度值。我认为做到这一点的最佳方法是执行多元回归。
我知道sklearn具有从其linear_model库执行线性多元回归的功能。
from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit('independent data', 'dependent data')
但是,我的温度似乎与纬度或经度没有线性关系。因此,我推断的某些值似乎不正确。
我当时想通过执行多项式多元回归而不是线性回归可以改善外推法。
是否已经有一些提供此功能的库?
答案 0 :(得分:2)
最简单的方法可能是进行线性回归,但要执行一些基本的“特征工程”并创建自己的多项式特征。您可以看一下PolynomialFeatures,它可以帮助构造多项式特征。
作为一个基本示例,请考虑以下问题:
# make example data
x = np.linspace(0, 10, 10)
y = x**2 + np.random.rand(len(x))*10
# make new polynomial feature
x_squared = x**2
# perform LR
LR = LinearRegression()
LR.fit(np.c_[x, x_squared], y) # np.c_ stacks the feature into a 2D array.
# evaulate the model
eval_x = np.linspace(0, 10, 100)
eval_x_squared = eval_x**2
y_pred = LR.predict(np.c_[eval_x, eval_x_squared])
# plot the result
plt.plot(x, y, 'ko')
plt.plot(eval_x, y_pred, 'r-', label='Polynomial fit')
plt.legend()
结果图形如下:
当然,在此示例中,我们必须手动构建功能,但是希望它向您展示了如何实际实现它。