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

现在面临这样一个任务:

乘坐出租车的时候,会有一个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

Original: https://blog.csdn.net/zhou8622/article/details/126855100
Author: 小虎周
Title: 飞桨机器学习最小实现,出租车计费规则预测

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762938/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球