Полиномиальная регрессия хребта: как получить параметры для найденного уравненияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Полиномиальная регрессия хребта: как получить параметры для найденного уравнения

Сообщение Anonymous »

Я использовал Sklearn для регрессии полиномиального хребта. Используя поиск в сетке, я доволен результатами. Теперь я хотел бы сделать его как простое полиномиальное уравнение для запуска в небольшом модуле Python. Функция Sklearn возвращает параметр степени и альфа. Последний просто устанавливает регуляризацию для обучения. Первый рассказывает мне максимальную степень полученного уравнения. Но каковы параметры уравнения, которое он нашел? Я ожидаю, что уравнение будет от формы Ax^3 + BX^2 + CX + D, так что же такое A, B, C, D?from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import Ridge, Lasso, SGDRegressor
.
.
.
# === 4. Polynomial Ridge ===
poly_pipe = Pipeline([
('scaler', StandardScaler()),
('poly', PolynomialFeatures()),
('ridge', Ridge())
])
poly_params = {
'poly__degree': [2, 3],
'ridge__alpha': [0.01, 0.1, 1]
}
evaluate_model('Polynomial Ridge', poly_pipe, poly_params, is_linear=False)
< /code>
Решено: < /p>
На основе полученных комментариев есть две вещи примечания: < /p>
  • Если вы используете конвейер, то для воспроизведения результатов за пределами Sklearn вы должны воспроизвести шаги в трубопроводе < /li>
    . Коэффициенты-это коэффициенты для уравнения, а перехват-это перехват. Это как для линейной, так и для нелинейной регрессии. Приведенный ниже код разбивает полиномиальную регрессию и показывает, как воспроизводить результат с помощью «Just Python» ... ну, Pandas для компактности здесь. Обратите внимание, что я ожидал, что coef _ будет включать в себя y-intercept, но это не так, что мой код показывает уравнение с добавленным перехватом, но также включает в себя первый коэффициент (p [0]), который я ожидал, что будет y-intercept.
import pandas as pd
import warnings

# regression libs
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import Ridge
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures

# useful initializations
warnings.filterwarnings('ignore')

p = [0, 10, -20, .30]

# Create fake data
def regr_noise(x, p):
mu = np.random.uniform(0,50E6)
return (p[0] + p[1]*x + p[2]*x**2 + p[3]*x**3 + mu)

x = range(0,1000, 50)
df_fake = pd.DataFrame({'x':x})
df_fake['y'] = df_fake['x'].apply(lambda x: regr_noise(x, p))

# polynomial ridge regression
x = df_fake[['x']]
y = df_fake[['y']]

ridge_reg_poly = make_pipeline(PolynomialFeatures(degree=3),Ridge(alpha=0, solver="cholesky"))
temp = ridge_reg_poly.fit(x,y)
yp = temp.predict(x)

# get the coefficients and reproduce the results
p_found = ridge_reg_poly.steps[1][1].coef_
p_interc = ridge_reg_poly.steps[1][1].intercept_
print('coeff:',p_found,'\nintercep:' ,p_interc)

def regr_clean(x, p):
return (p[0] + p[1]*x + p[2]*x**2 + p[3]*x**3 + p_interc)

y_fmcoef = regr_clean(x, p_found).rename(columns={'x':'y'})

yp - y_fmcoef.y



Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-found
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»