机器学习—使用Gradient Descent预测房价—c++实现

1.Introduction

之前写了一篇梯度下降的c语言实现,听吴恩达机器学习的入门课,于是考虑自己写一个简易的机器学习的例子。
我们打算做一个model为f(x) = W*x+B这样简单的模型。背景可以理解为房子的面积对应不同的价格。x为房子的面积,纵坐标f(x)为房价。

2.Algorithm

实际上我们主要根据数据去估计W和B,通过使用梯度下降法,去求解最优B和W,我总结的步骤如下,后续也是根据下面的过程编写的c++代码:
在这里插入图片描述

3.Conding Use C++

我们给了如下的点 (1,11) (2,13) (3,15) (4,17),(5,19),(6,21)显然是满足Y = 2 X +9的表达式,我们是要用这四个点去估计W和B,是否能让机器自己拟合出Y = 2 X +9的表达式。
具体代码实施如下:

/**
 * @file MachineLearning.cpp
 * @author juchunyu
 * @brief 
 * @version 0.1
 * @date 2022-07-29
 * 
 * @copyright Copyright (c) 2022
 * 
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
mini-batch gradient descent(小批量梯度下降)是梯度下降算法的一种变种,它在每个迭代步骤中计算部分训练样本的梯度,并更新模型权重。相比于批量梯度下降,mini-batch gradient descent具有更小的计算和内存需求,并且通常可以更快地找到较好的优化方向。 以下是mini-batch gradient descent的代码实现: 1. 初始化模型的权重和偏置。 2. 定义批量大小(batch_size),即每次更新模型参数时使用的样本数量。 3. 将训练集划分为大小为batch_size的小批量并进行迭代。 4. 对于每个小批量样本,计算其梯度。 5. 对于每个模型参数,使用计算得到的梯度和学习率来更新参数。 6. 重复步骤3-5,直到达到设定的迭代次数或收敛条件。 以下是一个简单的mini-batch gradient descent的Python代码示例: ```python # 计算梯度 def calculate_gradient(X, y, weights): # 根据模型参数计算预测值 y_pred = np.dot(X, weights) # 计算预测误差 error = y_pred - y # 计算梯度 gradient = np.dot(X.T, error) / len(X) return gradient # 更新模型参数 def update_weights(weights, gradient, learning_rate): new_weights = weights - learning_rate * gradient return new_weights # mini-batch gradient descent def mini_batch_gradient_descent(X, y, batch_size, learning_rate, num_iterations): # 初始化模型参数 weights = np.zeros(X.shape[1]) # 迭代更新模型参数 for _ in range(num_iterations): # 划分小批量样本 random_indices = np.random.choice(len(X), size=batch_size, replace=False) X_batch = X[random_indices] y_batch = y[random_indices] # 计算梯度 gradient = calculate_gradient(X_batch, y_batch, weights) # 更新模型参数 weights = update_weights(weights, gradient, learning_rate) return weights # 调用mini-batch gradient descent函数进行模型训练 weights = mini_batch_gradient_descent(X_train, y_train, batch_size=32, learning_rate=0.01, num_iterations=1000) ``` 在上述代码中,`X`和`y`分别表示训练数据集和目标变量,`weights`为模型的参数,`batch_size`为批量大小,`learning_rate`为学习率,`num_iterations`为迭代次数。 在每次迭代中,算法会将训练数据集随机划分为大小为`batch_size`的小批量样本,然后根据这些小批量样本计算梯度,并使用学习率来更新模型参数。重复多次迭代后,算法将得到最优的模型参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Ju

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值