12.1 原始线性模型
接下来用用代码建立一个:
def make_prediction(input_row,coefficients):
# 预测值初始化为第一个系数值
out_put_y_hat = coefficients[0]
for i in range(len(input_row)-1):
out_put_y_hat += coefficients[i+1]*input_row[i]
return out_put_y_hat
# 主函数
if '__main__' == __name__:
test_dataset = [[1,1],[2,3],[4,3],[3,2],[5,5]]
test_coefficients = [0.4,0.8]
for row in test_dataset:
y_hat = make_prediction(row, test_coefficients)
print("True_Y_value = %.3f, our_prediction = %.3f"%(row[-1],y_hat))
12.2 梯度下降优化
epochs:次数,我们这个模型不断通过学习training data,不断进行迭代更新coefficient
(1)把所有的epochs进行Loop
(2)在每一个epoch里面训练集row进行循环
(3)每次循环都会进行系数(coefficient)调优
# -*- coding: utf-8 -*-
"""
Created on Mon May 9 09:02:31 2022
@author: xiaofeng
"""
def make_prediction(input_row, coefficients):
out_put_y_hat = coefficients[0]
for i in range(len(input_row) - 1):
out_put_y_hat += coefficients[i + 1] * input_row[i]
return out_put_y_hat
def using_sgd_method_to_calculate_coefficients(training_dataset, learning_rate, n_times_epoch):
coefficients = [0.0 for i in range(len(training_dataset[0]))]
for epoch in range(n_times_epoch):
the_sum_of_error = 0
for row in training_dataset:
y_hat = make_prediction(row, coefficients)
error = y_hat - row[-1]
the_sum_of_error += error ** 2
coefficients[0] = coefficients[0] - learning_rate * error
for i in range(len(row) - 1):
coefficients[i + 1] = coefficients[i + 1] - learning_rate * error * row[i]
print("This is epoch [%d],the learning rate we are using is [%.3f],the error is [%.3f]" % (
epoch, learning_rate, the_sum_of_error))
return coefficients
# 主函数
if '__main__' == __name__:
your_trainging_dataset = [[1, 1], [2, 3], [4, 3], [3, 2], [5, 5]]
your_model_learning_rate = 0.001
your_n_epoch = 500
your_coefficients = using_sgd_method_to_calculate_coefficients(your_trainging_dataset,
your_model_learning_rate,
your_n_epoch)
print(your_coefficients)