Это упоминается в комментарии к сообщению, но вам нужно разделить на общее количество выборок, чтобы получить число, которое вы можете сравнить между проверочными и тестовыми наборами.
Просто измените код:
y_predicted = f(X_train, theta) #predicted y-value at point x, where y_train is the actual y-value at x
training_error = 0
for i in range(90):
out = y_predicted[i] - y_train[i]
out = out*out
training_error+=out
#change 2 to 90
training_error = training_error/90
print('The training error for this regression model is:', training_error)
Цель этого состоит в том, чтобы вы могли сравнить два разных подмножества данных, используя один и тот же показатель c. Там у вас было деление на 2, что было нормально, так же как и деление на количество сэмплов.
Еще один способ сделать это в Python - использовать научный набор библиотека, она уже имеет функцию .
, см. ниже.
from sklearn.metrics import mean_squared_error
training_error = mean_squared_error(y_train,y_predicted)
Также обычно при таких расчетах лучше и быстрее использовать матричное умножение вместо А для л oop. В контексте этого вопроса 90 записей довольно малы, но когда вы начнете работать с большими объемами выборки, вы можете попробовать что-то вроде этого, используя numpy.
import numpy as np
training_error = np.mean(np.square(np.array(y_predicted)-np.array(y_train)))
Все 3 способа должны дать вам аналогичные результаты.