#make prediction
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
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))
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 # 从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("第 【%d】步,我们使用的学习率是 【%.3f】,错误是【%.3f】" % (
epoch, learning_rate, the_sum_of_error))
return coefficients
your_training_dataset = [[1, 1],
[2, 3],
[4, 3],
[3, 2],
[5, 5]]
your_model_learning_rate = 0.001
your_n_epoch = 50
your_coefficients = using_sgd_method_to_calculate_coefficients(your_training_dataset,
your_model_learning_rate,
your_n_epoch)
print(your_coefficients)
Tuning
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 = [9999 for i in range(len(training_dataset[0]))] # 9999 表示起点
for epoch in range(n_times_epoch):
the_sum_of_error = 0 # 从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("第 【%d】步,我们使用的学习率是 【%.3f】,错误是【%.3f】" % (
epoch, learning_rate, the_sum_of_error))
return coefficients
your_training_dataset = [[1, 1],
[2, 3],
[4, 3],
[3, 2],
[5, 5]]
your_model_learning_rate = 0.001
your_n_epoch = 50
your_coefficients = using_sgd_method_to_calculate_coefficients(your_training_dataset,
your_model_learning_rate,
your_n_epoch)
print(your_coefficients)
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 = [9999 for i in range(len(training_dataset[0]))] # 9999 表示起点
for epoch in range(n_times_epoch):
the_sum_of_error = 0 # 从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("第 【%d】步,我们使用的学习率是 【%.3f】,错误是【%.3f】" % (
epoch, learning_rate, the_sum_of_error))
return coefficients
your_training_dataset = [[1, 1],
[2, 3],
[4, 3],
[3, 2],
[5, 5]]
your_model_learning_rate = 0.001
your_n_epoch = 15000
your_coefficients = using_sgd_method_to_calculate_coefficients(your_training_dataset,
your_model_learning_rate,
your_n_epoch)
print(your_coefficients)