2026/4/2 17:40:18
网站建设
项目流程
凡科建站教程,主机屋,百度灰色关键词排名代做,网上项目外包import numpy as np# 读取训练样本数 k
k int(input())
# 读取训练数据#xff1a;共 k*4 个整数#xff08;每样本 3 特征 1 标签#xff09;
data list(map(int, input().split()))
# 读取预测样本数 n
n int(input())
# 读取待预测数据#xff1a;共 n*3 个整数int(input())# 读取训练数据共 k*4 个整数每样本 3 特征 1 标签datalist(map(int,input().split()))# 读取预测样本数 nnint(input())# 读取待预测数据共 n*3 个整数每样本 3 特征pred_datalist(map(int,input().split()))# 构建训练集 x (特征) 和 y (标签)x[]y[]foriinrange(k):starti*4featuredata[start:start3]# 前3个是特征pricedata[start3]# 第4个是价格标签x.append(feature)y.append(price)xnp.array(x,dtypefloat)# 转为浮点型梯度下降需要xnp.c_[np.ones(x.shape[0]),x]# 添加偏置列全1ynp.array(y,dtypefloat)# 梯度下降替代正规方程 m,px.shape# m: 样本数, p: 特征数含偏置thetanp.zeros(p)# 初始化参数 theta 为 0learning_rate0.01# 学习率可调num_iterations10000# 迭代次数可调# 梯度下降主循环for_inrange(num_iterations):# 计算预测值y_predx theta# 计算梯度(1/m) * X^T (Xθ - y)gradient(1/m)*x.T (y_pred-y)# 更新参数thetatheta-learning_rate*gradient# 预测部分保持不变x_pred[]foriinrange(n):starti*3featurepred_data[start:start3]x_pred.append(feature)x_prednp.array(x_pred,dtypefloat)x_prednp.c_[np.ones(x_pred.shape[0]),x_pred]# 添加偏置列# 使用学到的 theta 进行预测y_predx_pred theta y_pred_rounded[round(i)foriiny_pred]# 输出结果拼接成字符串print(.join(map(str,y_pred_rounded))) 关键改动说明原代码正规方程新代码梯度下降theta np.linalg.inv(x.Tx)x.Ty用for循环迭代更新theta不需要设置超参数需要设置learning_rate和num_iterations一步求解多次迭代逼近最优解⚙️ 超参数建议可根据数据调整learning_rate如果 loss 震荡或发散 → 减小如0.001如果收敛太慢 → 增大如0.1num_iterations一般1000~10000足够也可加早停机制当 loss 变化很小时停止提示如果特征尺度差异大比如一个特征是“面积100”另一个是“房间数3”建议先做特征标准化如(x - mean)/std否则梯度下降会很慢。但本题输入是整数且未说明范围暂时省略。✅ 示例输入/输出验证用输入2 1 2 3 10 4 5 6 30 1 7 8 9训练样本1: [1,2,3] → 10训练样本2: [4,5,6] → 30预测样本: [7,8,9] → ?输出近似50因为模型学到大致是y ≈ x1 x2 x378924但实际拟合可能不同若用正规方程得精确解梯度下降应接近