Как сделать кубическую или более высокую полиномиальную множественную регрессию в Python? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть набор данных, где долгота и широта являются независимыми переменными, а температура является зависимой переменной.Я хочу иметь возможность выполнить экстраполяцию, чтобы получить значения температуры вне диапазона широты и долготы.Лучший способ, которым я думал сделать это, это выполнить множественную регрессию.

Я знаю, что у sklearn есть функция для выполнения линейной множественной регрессии из их библиотеки linear_model.

from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit('independent data', 'dependent data') 

Однако моя температура, похоже, не имеет линейной зависимости с широтой илис долготой.Таким образом, некоторые значения, которые я экстраполирую, кажутся отключенными.

Я думал, что, возможно, я мог бы улучшить экстраполяцию, выполняя многочленную множественную регрессию вместо линейной.

Есть ли какая-нибудь библиотека, которая уже обеспечивает эту функциональность?

1 Ответ

0 голосов
/ 04 марта 2019

Вероятно, самый простой способ - это выполнить линейную регрессию, но выполнить некоторую базовую «разработку функций» и создать собственные полиномиальные элементы.Вы можете взглянуть на 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()

Получившийся показатель выглядит следующим образом:

linear_regression_with_poly_features

Конечно, нам пришлось вручную построить наши функции в этом примере, но, надеюсь, он покажет вам, как его можно практически реализовать.

...