Управление выводом класса градиентного спуска в Python

Я создал класс LinearRegression как часть домашней задачи, но результаты, которые я получаю, отображают сумасшедшее количество десятичных знаков вместе с научной записью. Мне бы очень понравилось, если бы мой вывод отображал значения только до нескольких десятичных знаков.

Я пробовал попробовать f-string и format. Эти делают уменьшают количество отображаемых десятичных знаков, но экспоненциальное представление остается в выводе, а иногда некоторые значения отображаются просто как «inf». Примеры ниже.

Если я проверю это следующим образом (согласно заданию):

from model import LinearRegression # model.py is my file

model = LinearRegression()
examples = list(range(1, 1000))
values = list(range(1, 1000))

for i in range(len(examples)):
    model.addSample(examples[i], values[i])

print(model.fit(0.0006, 100))

Я получаю вывод:

(2.1803197675124753549e+229, 1.4528186498977718021e+232, 1.7775211633675145435e+465)

Когда я добавляю форматирование (например, возвращая '{:.4}'.format(self.theta_0) в методе fit() моего класса), я получаю:

('2.18e+229', '1.453e+232', 'inf')

Я действительно не уверен, почему это так привередливо. Должно быть что-то, что я упускаю. Любая помощь приветствуется!


person Emily Hashimoto    schedule 08.11.2019    source источник


Ответы (1)


'{:.4f}'.format(self.theta_0)

OR

импортировать numpy как np

np.set_printoptions (подавить = Истина)

person Here    schedule 08.11.2019
comment
Возможно, я добавляю их неправильно... но я все равно получаю вывод: ('2.18e+229', '1.453e+232', 'inf') - person Emily Hashimoto; 08.11.2019
comment
Почему моя среднеквадратическая ошибка может выводиться как «inf» после форматирования? Раньше такого не было - person Emily Hashimoto; 08.11.2019
comment
Кроме того, будет ли работать изменение параметров печати, если мои значения будут возвращены? - person Emily Hashimoto; 08.11.2019
comment
Я думаю, что mse намного больше, чем первые два, поэтому его нельзя правильно распечатать. Чтобы отобразить это, вы можете попробовать десятичную библиотеку. И изменение параметра функции печати также будет работать - person Here; 08.11.2019