我正在尝试从头开始实现自己的多项式回归模型,这是我到目前为止编写的内容:
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或其他软件包,因此我没有找到解决方案。您能帮助我检查此问题吗?
答案 0 :(得分:0)
首先,多项式回归使用平均绝对误差,L1损失 要么 均方误差,二次方损失,L2损失以避免误差过大
第二个x的形状是什么?系数应为x