def gradient_descent(x_list, y_list, w, b, learning_rate, iterations): m = len(x_list) for _ in range(iterations): slope_w = 0 slope_b = 0 for i in range(m): prediction = w * x_list[i] + b error = prediction - y_list[i] slope_w += error * x_list[i] slope_b += error slope_w = slope_w / m slope_b = slope_b / m w = w - learning_rate * slope_w b = b - learning_rate * slope_b return w, b distances = [1, 2, 3, 4, 5] actual_times = [12, 17, 22, 27, 32] final_w, final_b = gradient_descent(distances, actual_times, w=0, b=0, learning_rate=0.01, iterations=10000) print("Final w:", final_w) print("Final b:", final_b) # Final w: close to 5 # Final b: close to 7 __ __