Data Science and Machine Learning Algorithms from Scratch-Gradient Descent-03

Insert picture description here

#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))


Insert picture description here
Insert picture description here

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)

Insert picture description here

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)

Insert picture description here

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)

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_37978800/article/details/114195266