import numpy as npdef linear_regressionXy w = npzeros_likeXshape1 if nplinalgdetXTdotX != 0 w = nplinalginvXTdotXdotXTdoty return w# X为特征矩阵
代码中的 X 和 y 都是需要传入的参数,分别代表特征矩阵和标签矩阵。在函数中,首先初始化回归系数向量 w,然后判断特征矩阵 X 的转置矩阵乘以 X 的行列式是否为0,如果不为0,则使用逆矩阵求解回归系数向量 w。最后返回回归系数向量 w。
接下来,使用求解出的回归系数向量 w 对特征矩阵 X 进行矩阵乘法运算,得到预测值向量 y_predicted。真实值向量 y_actual 直接传入即可。计算误差向量 error 即为预测值向量 y_predicted 减去真实值向量 y_actual。最后计算均方误差 mse。
完整代码如下:
import numpy as np
def linear_regression(X, y): w = np.zeros_like(X.shape[1]) if np.linalg.det(X.T.dot(X)) != 0: w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) return w
X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([3, 7, 11])
w = linear_regression(X, y) y_predicted = X.dot(w) y_actual = y error = y_predicted - y_actual mse = np.sum(error ** 2) / len(y)
print("回归系数向量 w:", w) print("预测值向量 y_predicted:", y_predicted) print("真实值向量 y_actual:", y_actual) print("误差向量 error:", error) print("均方误差 mse:", mse
原文地址: https://www.cveoy.top/t/topic/fjex 著作权归作者所有。请勿转载和采集!