Проблема в реализации логистической регрессии

Я попробовал реализовать алгоритм предсказания на основе логистической регрессии, но начиная с 4 эпохи, выводится nan. В консоли пишет:

RuntimeWarning: invalid value encountered in log PX = np.log(X.dot(p))

Подскажите пожалуйста в чем проблема моей реализации?

Ссылка на методичку откуда на основе которой я писал код.

Сам код:

import numpy as np
from numpy.core.fromnumeric import reshape
from numpy.ma.core import power
import pandas as pd

df = pd.read_excel("БД Титаник.xlsx")
data = df.to_numpy()[2:]
for x in data:
    x[x.size - 1] = float(x[x.size - 1])

X = data.copy().astype(float)
X[:,0] = 1

Y = (data[:, :1].T)[0].astype(float)

p = np.zeros(7)
p[0] = np.average(Y)

nt = 0.01

def power_sigmoid(PX, Y):
    return np.power(1/(1 + np.exp(PX)), Y)

epoch = 1000
current_epoch = 1
while(current_epoch < epoch):
    PX = np.log(X.dot(p))
    print(X.dot(p)[0])
    lp = np.sum(np.log(power_sigmoid(-PX, Y) * power_sigmoid(PX, 1 - Y)))
    deltal0 = np.sum((Y - power_sigmoid(-PX, 1)).reshape(-1, 1) * X)
    #print(current_epoch, deltal0)
    p = p + nt * deltal0
    current_epoch += 1

#Для теста прогоняю первые 10 строк и вывожу предикт
for i in range(10):
    x = X[i]
    px = x.dot(p)
    y = 1 / (1 + np.exp(-px))
    print(y)

Ответы (0 шт):