酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

目标:根据以下数据,利用线性回归模型研究商品销售量y与广告投入x的关系,写出python代码 广告投入(百万元)5.50 6.75 7.25 7.00 6.50 5.25 6.00 4.50 8.25 9.50 销售量(百万件)11.50 13.70 14.83 14.15 13.06 11.71 12.16 9.96 15.88 18.33 任务:1) 写出本问题的线性回归模型; 2) 写出相应的目标函数l; 3) 通过闭式解的方式求y与x的关系; 4) 利用梯度下降法求y与x的关系; 5) 预测广告投入为1千万元时,商品的销售量情况。

```python import numpy as np import matplotlib.pyplot as plt # 数据 x = np.array([5.50, 6.75, 7.25, 7.00, 6.50, 5.25, 6.00, 4.50, 8.25, 9.50]) y = np.array([11.50, 13.70, 14.83, 14.15, 13.06, 11.71, 12.16, 9.96, 15.88, 18.33]) # 1) 线性回归模型:y = w * x + b # 2) 目标函数 l(均方误差) def loss_function(w, b, x, y): y_pred = w * x + b return np.mean((y_pred - y) 2) # 3) 闭式解 x = x.reshape(-1, 1) X = np.hstack([x, np.ones((x.shape[0], 1))]) w = np.linalg.inv(X.T @ X) @ X.T @ y print("闭式解得到的斜率 w:", w[0]) print("闭式解得到的截距 b:", w[1]) # 4) 梯度下降法 def gradient_descent(x, y, learning_rate, num_iterations): w = 0 b = 0 for _ in range(num_iterations): y_pred = w * x + b dw = np.mean((y_pred - y) * x) db = np.mean(y_pred - y) w -= learning_rate * dw b -= learning_rate * db return w, b learning_rate = 0.01 num_iterations = 1000 w_gd, b_gd = gradient_descent(x, y, learning_rate, num_iterations) print("梯度下降法得到的斜率 w:", w_gd) print("梯度下降法得到的截距 b:", b_gd) # 5) 预测广告投入为 1 千万元时的销售量 x_pred = 10 # 1 千万元 = 10 百万元 y_pred_closed = w[0] * x_pred + w[1] y_pred_gd = w_gd * x_pred + b_gd print("闭式解预测广告投入为 1 千万元时的销售量:", y_pred_closed) print("梯度下降法预测广告投入为 1 千万元时的销售量:", y_pred_gd) # 绘图 plt.scatter(x, y) plt.plot(x, w[0] * x + w[1], color='red', label='闭式解') plt.plot(x, w_gd * x + b_gd, color='green', label='梯度下降法') plt.xlabel('广告投入(百万元)') plt.ylabel('销售量(百万件)') plt.title('线性回归') plt.legend() plt.show() ``` [2024-11-18 20:44:33 | AI写代码神器 | 712点数解答]

相关提问