Как сделать гауссовскую / полиномиальную регрессию с помощью scikit-learn?
предоставляет ли scikit-learn возможность выполнять регрессию с использованием гауссова или полиномиального ядра? Я посмотрел на Аписа и ничего не увидел. Кто-нибудь построил пакет поверх scikit-узнайте, что это делает?
2 ответов
теория
полиномиальная регрессия является частным случаем линейной регрессии. С основной идеей о том, как вы выбираете свои функции. Глядя на многомерную регрессию с 2 переменными:x1
и x2
. Линейная регрессия будет выглядеть так:y = a1 * x1 + a2 * x2.
теперь вы хотите иметь полиномиальную регрессию (давайте сделаем полином 2 степени). Мы создадим несколько дополнительных функций: x1*x2
, x1^2
и x2^2
. Так мы получим ваше " линейное регрессия:
y = a1 * x1 + a2 * x2 + a3 * x1*x2 + a4 * x1^2 + a5 * x2^2
это красиво показывает важную концепцию проклятие размерности, потому что число новых функций растет гораздо быстрее, чем линейно с ростом степени полинома. Вы можете посмотреть об этом понятии здесь.
практика с scikit-learn
вам не нужно делать все это в пакет scikit. полиномиальной регрессии уже доступен там (в 0.15 версия. Проверка как обновить его здесь).
from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model
X = [[0.44, 0.68], [0.99, 0.23]]
vector = [109.85, 155.72]
predict= [0.49, 0.18]
poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X)
predict_ = poly.fit_transform(predict)
clf = linear_model.LinearRegression()
clf.fit(X_, vector)
print clf.predict(predict_)