Я пытаюсь применить одну и всю логистическую регрессию:
Я использую один vs весь метод (class1 vs class2+ class3, c2 vs c1 + c3, c3 vs c1 + c2), чтобы вычислить весы w1, w2, w3:
for n1 in range(0,50000):
s1 = np.dot(dt, w1)
p1 = (1 / (1 + np.exp(-s1)))
gr1 = (np.dot(dt.T, p1-c1))
gr1 /= N
w1 -= 0.01 * gr1
if n1 % 10000 == 0 and n1!=0:
loss1 = np.sum( np.log(1 + np.exp(s1))-p1*s1 )
print('loss1',loss1)
dt - мои особенности,
w1, w2, w3 инициализируются как w1 = np.zeros((5,1)),
c1=np.vstack((np.ones(40),np.zeros(40),np.zeros(40)))
c2=np.vstack((np.zeros(40),np.ones(40),np.zeros(40)))
c3=np.vstack((np.zeros(40),np.zeros(40),np.ones(40)))
так. набор диафрагмы не является совершенным линейно отделимым во всех множествах. поэтому мы используем линейный классификатор, такой как логистическая регрессия, потеря в части, которая не является линейно разделяемой, как правило, непредсказуема. вы можете поставить очень маленькую обучающую ненависть и терпеливый метод, чтобы избежать переутомления. нормализация ваших данных между 0 и 1 тоже поможет.