Как сделать гауссовскую / полиномиальную регрессию с помощью scikit-learn?

предоставляет ли scikit-learn возможность выполнять регрессию с использованием гауссова или полиномиального ядра? Я посмотрел на Аписа и ничего не увидел. Кто-нибудь построил пакет поверх scikit-узнайте, что это делает?

2 ответов


либо вы используете векторную регрессию поддержки sklearn.svm.SVR и установите appropritate kernel (см. здесь).

или вы устанавливаете последнюю мастер-версию sklearn и используете недавно добавленную sklearn.preprocessing.PolynomialFeatures (см. здесь), а затем OLS или Ridge поверх этого.


теория

полиномиальная регрессия является частным случаем линейной регрессии. С основной идеей о том, как вы выбираете свои функции. Глядя на многомерную регрессию с 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_)