我正在尝试使用 numpy polyfit 方法将正则化添加到我的解决方案中。我的非常规解决方案是
coefficients = np.polynomial.polynomial.polyfit(x,y,5)
ypred = np.polynomial.polynomial.polyval(x,coefficients)
我将如何修改它以添加 L2 正则化?
我正在尝试使用 numpy polyfit 方法将正则化添加到我的解决方案中。我的非常规解决方案是
coefficients = np.polynomial.polynomial.polyfit(x,y,5)
ypred = np.polynomial.polynomial.polyval(x,coefficients)
我将如何修改它以添加 L2 正则化?
这是我为了使用正则化拟合多项式而开发的一段代码:
/* x_tr 和 y_tr 是训练数据,x_te 和 y_te 测试数据 */ 度 = 4 identity_size = 度数 + 1 x_tilda = np.array([x_tr, np.ones(len(x_tr))]).transpose()对于范围内的度数(2,度数 + 1): x_tilda = np.append(np.array(np.power(x_tr, degree))[np.newaxis].transpose(), x_tilda, axis=1)
y_reg = y_tr
identidad = np.identity(identity_size)
def get_theta(rho): mul1 = np.linalg.inv( np.add( np.matmul(x_tilda.transpose(),x_tilda), np.dot(identidad, rho))) mul2 = np.matmul(x_tilda.transpose(), y_reg) 返回 np.matmul(mul1, mul2)
def poly(x, rho): theta = get_theta(rho) print("Theta polyfit:", np.polyfit(x_tr,y_reg, degree)) print("Theta 公式:", get_theta(rho))
p = np.poly1d(theta) return p(x) rho = 0 // this is the regularization param plt.figure() plt.scatter(x_te,poly(x_te, rho), c ='r') plt.scatter(x_te,y_te, c ='b')<code>
上述解决方案基于以下多项式公式(而不是 X,它使用 poly(X) 表示具有平方误差损失的一般分析解决方案。