Python实现批量梯度下降:随机选16样本更新参数,附损失与回归效果图
以下是为您修改的批量梯度下降函数的代码示例: ```python import numpy as np import matplotlib.pyplot as plt def batch_gradient_descent(X, y, learning_rate, num_epochs, batch_size=16): # 初始化参数 w = np.zeros(X.shape[1]) b = 0 num_samples = X.shape[0] losses = [] for epoch in range(num_epochs): # 打乱样本顺序 indices = np.random.permutation(num_samples) X_shuffled = X[indices] y_shuffled = y[indices] for i in range(0, num_samples, batch_size): # 取批量样本 X_batch = X_shuffled[i:i + batch_size] y_batch = y_shuffled[i:i + batch_size] # 计算梯度 gradient_w = np.dot(X_batch.T, (np.dot(X_batch, w) + b - y_batch)) / batch_size gradient_b = np.sum(np.dot(X_batch, w) + b - y_batch) / batch_size # 更新参数 w -= learning_rate * gradient_w b -= learning_rate * gradient_b # 计算损失 loss = np.mean((np.dot(X, w) + b - y) 2) losses.append(loss) # 绘制损失函数变化图 plt.plot(losses) plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Loss Function over Epochs') plt.show() # 绘制回归效果图 y_pred = np.dot(X, w) + b plt.scatter(X[:, 0], y) plt.plot(X[:, 0], y_pred, color='red') plt.xlabel('X') plt.ylabel('y') plt.title('Regression Result') plt.show() # 示例用法 X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]) y = np.array([3, 5, 7, 9, 11]) learning_rate = 0.01 num_epochs = 100 batch_gradient_descent(X, y, learning_rate, num_epochs) ``` 额外需要注意的逻辑点: 1. 批量大小的选择要根据数据量和计算资源进行权衡。 2. 打乱样本顺序对于梯度下降的效果有一定影响。 3. 学习率的调整可能需要多次试验以获得较好的收敛效果。 ######[AI写代码神器 | 590点数解答 | 2024-12-03 22:26:29]
- 256级灰阶图像压缩为16级灰阶的Python实现(字节豆包 | 675点数解答 | 2026-02-14 20:17:48)48
- 256级灰阶图像压缩为16级灰阶的C++实现方案(字节豆包 | 1080点数解答 | 2026-02-14 20:19:02)37
- 易语言:实现搜索通配符功能,解决搜索内容超255问题(字节豆包 | 32点数解答 | 2026-02-09 16:44:31)66
- 代码优化:“A_寻找通配符”子程序的改进之路(字节豆包 | 1248点数解答 | 2026-02-09 16:45:52)66
- 易语言:A_寻找通配符子程序完整实现及详细代码解读(字节豆包 | 1368点数解答 | 2026-02-09 16:49:12)65
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)496
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- 工程师语境中的“回归”:分析、测试与退步含义全解析(百度文心 | 213点数解答 | 2023-11-09 18:23:11)245
- 动态规划求解数组下标元素和最大值代码分析与优化(字节豆包 | 346点数解答 | 2026-03-16 17:56:30)33
- 易语言代码优化:自动出售物资子程序整合与优化全解析(DeepSeek | 2181点数解答 | 2025-07-23 10:26:29)230
- 大文件多线程上传流程全解析:从步骤说明到代码示例及注意事项(字节豆包 | 1079点数解答 | 2025-09-24 13:45:27)130
- 易语言:实现 Api 读取整数型内存数据的代码剖析(字节豆包 | 34点数解答 | 2026-02-09 11:48:57)35