飞桨机器学习最小实现,出租车计费规则预测

该博客介绍了如何利用PaddlePaddle框架进行机器学习的初步实践。通过设定出租车费用计算问题,建立了一个简单的线性模型,模型参数包括起步价(b)和每公里费用(w)。通过迭代学习,最终得出参数w约为2.018,b约为9.766。随着更多数据的引入和训练时间的增长,模型参数将更接近实际值2和10。这展示了机器学习如何从数据中学习规律并进行预测。
摘要由CSDN通过智能技术生成

现在面临这样一个任务:

乘坐出租车的时候,会有一个10元的起步价,只要上车就需要收取。出租车每行驶1公里,需要再支付每公里2元的行驶费用。
当一个乘客坐完出租车之后,车上的计价器需要算出来该乘客需要支付的乘车费用。正常的计算方法: total_fee = w * distance_travelled + b

接下来,把问题稍微变换一下,现在知道乘客每次乘坐出租车的公里数,也知道乘客每次下车的时候支付给出租车司机的总费用。
但是并不知道乘车的起步价,以及每公里行驶费用是多少。希望让机器从这些数据当中学习出来计算总费用的规则。
想要让机器学习程序通过数据学习出来下面的公式当中的参数 w 和参数 b(这是一个非常简单的示例,所以w和b都是浮点数,随着对深度学习了解的深入,
你将会知道w和b通常情况下会是矩阵和向量)。这样,当下次乘车的时候,知道了行驶里程distance_travelled的时候,
就可以估算出来用户的总费用total_fee了。

import paddle
print("paddle " + paddle.__version__)

# prepare data
x_data = paddle.to_tensor([[1.], [3.0], [5.0], [9.0], [10.0], [20.0]])
y_data = paddle.to_tensor([[12.], [16.0], [20.0], [28.0], [30.0], [50.0]])

# define calculate model
linear = paddle.nn.Linear(in_features=1, out_features=1)

# prepare run paddle
w_before_opt = linear.weight.numpy().item()
b_before_opt = linear.bias.numpy().item()

print("w before optimize: {}".format(w_before_opt))
print("b before optimize: {}".format(b_before_opt))

"""
how to learn 
衡量差距的函数(一个公式)就是损失函数,用来调整参数的方法就是优化算法。
用最简单的均方误差(mean square error)作为损失函数(paddle.nn.MSELoss);
和最常见的优化算法SGD(stocastic gradient descent)作为优化算法(传给paddle.optimizer.SGD的参数learning_rate,你可以理解为控制每次调整的步子大小的参数)。
"""

mse_loss = paddle.nn.MSELoss()
sgd_optimizer = paddle.optimizer.SGD(learning_rate=0.001, parameters = linear.parameters())

# run optimizer (learning)
total_epoch = 5000
for i in range(total_epoch):
    y_predict = linear(x_data)
    loss = mse_loss(y_predict, y_data)
    loss.backward()
    sgd_optimizer.step()
    sgd_optimizer.clear_grad()

    if i % 1000 == 0:
        print("epoch {} loss {}".format(i, loss.numpy()))

print("finished training, loss {}".format(loss.numpy()))

# result
w_after_opt = linear.weight.numpy().item()
b_after_opt = linear.bias.numpy().item()

print("w after optimize: {}".format(w_after_opt))
print("b after optimize: {}".format(b_after_opt))

运行结果输出:
import imp
paddle 2.3.2
w before optimize: 1.2779237031936646
b before optimize: 0.0
epoch 0 loss [269.062]
epoch 1000 loss [8.225423]
epoch 2000 loss [1.8391448]
epoch 3000 loss [0.4112188]
epoch 4000 loss [0.09194404]
finished training, loss [0.02058855]
w after optimize: 2.0182714462280273
b after optimize: 9.76637077331543

经过机器学习,已经算出了这两个参数值是2.0182714462280273,9.76637077331543
如果样本越多,学习时间越长,就会越接近2和10
这就是最简单的机器学习 Helloword

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值