Полиномиальная регрессия - PullRequest
2 голосов
/ 01 июля 2019

Я пытаюсь реализовать свою собственную модель полиномиальной регрессии с нуля, вот что я написал до сих пор:

import numpy as np



class Polynomial:

    def __init__(self, eta=0.2, degree=1, epochs=100):
        self.eta = eta
        self.degree = degree
        self.coef = np.ones(shape = (self.degree,))
        self.epochs = epochs

    def fit_coef(self, X_train, y_train):
        temp_coef = np.ones(shape=(self.degree, ))
        size = len(X_train)
        for _ in range(3):
            for x, y in zip(X_train, y_train):
                arr = np.array([x**i for i in range(self.degree)])
                for i in range(self.degree):
                    err = np.sum(np.transpose(arr)*self.coef)*2/size
                    err -= y
                    err *= x**i
                    err *= self.eta
                    temp_coef[i] -= err
                    print(temp_coef[i])
                self.coef = temp_coef

После попытки приспособить мою модель к любому примерному набору данных, я столкнулся спроблема, коэффициенты моей модели становятся значениями NaN, я заметил, что они очень быстро растут до больших значений.Я не могу объяснить это, так что исправьте это.Большинство онлайн-уроков, статей о полиномиальной регрессии фокусируются на использовании sklearn или других пакетов, поэтому я не нашел решения.Вы можете помочь мне разобраться с этой проблемой?

1 Ответ

0 голосов
/ 01 июля 2019

Во-первых, для полиномиальной регрессии используется средняя абсолютная ошибка, потеря L1 или ошибка среднего квадрата, квадратичная потеря, потеря L2, чтобы избежать слишком большой ошибки

Во-вторых, какова форма вашего x?кора должна иметь форму х

...