scikit поддерживает линейную и полиномиальную регрессию.
Проверьте страницу Generalized Linear Models в разделе Полиномиальная регрессия: линейные модели с базовыми функциями.
Пример:
>>> from sklearn.preprocessing import PolynomialFeatures
>>> import numpy as np
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
[2, 3],
[4, 5]])
>>> poly = PolynomialFeatures(degree=2)
>>> poly.fit_transform(X)
array([[ 1, 0, 1, 0, 0, 1],
[ 1, 2, 3, 4, 6, 9],
[ 1, 4, 5, 16, 20, 25]])
В особенности X были преобразованы из [x_1, x_2]
в [1, x_1, x_2, x_1^2, x_1 x_2, x_2^2]
, и теперь могут быть использованы в любой линейной модели.
Этот вид предварительной обработки может быть упрощен с помощью инструментов Pipeline. Один объект, представляющий собой простой полиномиальной регрессии может быть создан и используется следующим образом:
>>> from sklearn.preprocessing import PolynomialFeatures
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.pipeline import Pipeline
>>> model = Pipeline([('poly', PolynomialFeatures(degree=3)),
... ('linear', LinearRegression(fit_intercept=False))])
>>> # fit to an order-3 polynomial data
>>> x = np.arange(5)
>>> y = 3 - 2 * x + x ** 2 - x ** 3
>>> model = model.fit(x[:, np.newaxis], y)
>>> model.named_steps['linear'].coef_
array([ 3., -2., 1., -1.])
Линейная модель обучен на полиномиальных функций может точно восстановить входные коэффициенты полинома.
В некоторых случаях нет необходимости включать более высокие мощности какой-либо одной функции, но только так называемые функции взаимодействия, которые объединяются не более чем в d различных функциях. Их можно получить от PolynomialFeatures
с настройкой interaction_only=True
.
Я вижу, что я не в полной мере понять. в наименьшем квадрате я могу получить коэффициент корреляции, который может повысить качество подгонки. могу ли я получить этот номер из кода выше? – astrochris
Я думаю, что вы всегда можете вычислить [Коэффициент корреляции] (http://mathworld.wolfram.com/CorrelationCoefficient.html) – fferri
Проверьте это http://docs.scipy.org/doc/scipy-0.14.0/reference /generated/scipy.stats.pearsonr.html – fferri