正规方程求解:w = ( XT * X )(-1) * XT * Y(直接求解权重,包含偏置特征)
示例中X第一列是偏置特征(全为1),因此权重列表直接作为结果返回
按要求:第一个元素是权重列表,第二个是偏置(但此处权重已包含偏置特征的系数)
结合示例输出格式,直接返回权重列表(因示例将偏置特征的系数视为偏置)
import numpy as np def linear_regression_normal_equation(X: list[list[float]], Y: list[float]) -> list[float]: X_np = np.array(X) Y_np = np.array(Y) X_T = X_np.T # 转置X矩阵 X_T_X = np.dot(X_T, X_np) # 转置X矩阵*原X矩阵 X_T_Y = np.dot(X_T, Y_np) # 原X矩阵*原Y矩阵 weights = np.dot(np.linalg.inv(X_T_X), X_T_Y).flatten() # 权重向量(含偏置特征的系数) # np.linalg.inv()求矩阵的逆矩阵 # flatten()用于降维处理数据 return [round(w, 4) for w in weights] if __name__ == "__main__": import ast x = np.array(ast.literal_eval(input())) y = np.array(ast.literal_eval(input())).reshape(-1, 1) print(linear_regression_normal_equation(x, y))