def ridge_regression(X,y,ridge_lanbda): penalty_matrix = np.eye(X.shape[1]) penalty_matrix[X.shape[1] - 1][X.shape[1] -1] = 0 w=np.linalg.inv(X.T.dot(X) + ridge_lanbda*penalty_matrix).dot(X.T).dot(y) return w w2 = ridge_regression(X_train,y_train,1.0) print(w2) w1['numpy_ridgr_w']=w2 w1.round(decimals=2)
时间: 2023-12-06 09:41:41 浏览: 121
Ridge Regression
这段代码使用了岭回归(ridge regression)来拟合一个线性模型。岭回归是一种正则化方法,它通过对系数进行惩罚来防止过拟合。具体来说,岭回归在最小化损失函数的时候,除了最小化残差平方和,还会加上一个正则项,这个正则项是系数的平方和乘以一个惩罚因子(lambda)。
在这段代码中,X和y分别是输入特征和对应的目标值,ridge_lambda则是岭回归的惩罚因子。penalty_matrix是一个单位矩阵,除了最后一个元素是0,其余元素都是1乘以惩罚因子。这样,当w的最后一个元素被惩罚时,就可以避免常数项对模型产生过大影响。
接下来,使用np.linalg.inv求解出X.T.dot(X) + ridge_lambda*penalty_matrix的逆矩阵,然后再用dot函数计算出w的值。最后将w保存到w2中,并将其打印出来。最后一行代码将w2赋值给w1['numpy_ridgr_w'],并将w1的值四舍五入保留两位小数。
阅读全文