У меня есть выражение, как показано ниже, где данные - это матрица и theta - вектор, python постоянно повышает деление на 0 ошибок. Но только знаменатель (1 + е^х), каждый элемент этой матрицы не может быть 0 все равноNumpy в какой ситуации вернется «Divide by zero error»?
np.sum(-data[:,-1]*np.log(1.0/(1.0+np.exp(-np.dot(data[:,:-1],theta.transpose())))))
Есть ли повод я проигнорировала, который будет генерировать эту ошибку?
Странно, программа работает хорошо, и результаты правильные, даже если эта ошибка проявляется каждый раз.
Возможно ли, что либо 'theta', либо' data [:,: - 1] 'содержит комплексные числа? (Вряд ли, так как это похоже на ручную реализацию логистической регрессии, но может быть?) – ely
Это не должно происходить из ошибочного большого отрицательного числа, так как 'np.log (0)' дает 'inf' и не поднимает ошибка деления на нуль. Можете ли вы напечатать небольшую часть того, как выглядят данные в 'тета' и' data [:,: -1] '? – ely
'np.log (0)' дает предупреждение 'RuntimeWarning: деление на ноль, встречающееся в журнале, и возвращает' -inf' (с использованием numpy 1.9.1). –