Логистическая регрессия в Python

вот код с курса

y_pred_train=logreg.predict(x_train)
y_predict_train=logreg.predict_proba(x_train)[:,1]
logreg.score(x_test,y_train)

Вот хорошее объяснение,которое я нашел.

model.predict(X_test) – предсказать значения целевой переменной

model.predict_proba() – выдать «степень уверенности» в ответе (вероятность) – для некоторых моделей

model.score() – в большинстве моделей встроены методы оценки их качества работы

1)Не очень понимаю,что значит степень уверенности? и почему нельзя дать ответ,в котором уверенность 100%?

2)как score() оценивает работу модели,если на вход подаются x_train и y_train? Хотя по логике же должны y_pred и y_train? И вообще что значит оценка работы?

Где-то говорится про определитель,хотя я не знаком с этим понятием.

score(self, X, y, sample_weight=None)[source] Returns the coefficient of determination R^2 of the prediction. ... A constant model that always predicts the expected value of y, disregarding the input features, would get a R^2 score of 0.0. From sklearn documentation

  1. и последнее, почему мы всё присваиваем разным переменным?

    Почему нельзя a=predict(x_test) b=a.predict_proba()

Я подозреваю,что нам это сошло с рук,из-за того что я определил заранее random_state, то есть сколько раз не вызывай predict(), коэффициенты или же веса будут одинаковые. Но я не сильно уверен в этом)


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

Автор решения: passant

В предыдущем вашем вопросе вам посоветовали прочитать хотя-бы какую-нибудь литературу касательно темы, ну хоть для младших школьников. Похоже, вы к совету не прислушались. Потому как по вопросу видно, что никакого настоящего продвижения в понимании того, чем вы занимаетесь у вас как не было так и нет, ну разве что вы посмотрели форматы еще трех команд, так и не поняв, что они делают и вообще - зачем это все.

Тем не менее попробую ответить

1)Не очень понимаю,что значит степень уверенности? и почему нельзя дать ответ,в котором уверенность 100%?

В методе, который вы как бы "изучаете", результат получается в виде некоторого числа в пределах от нуля до единицы. Для некоторых (многих) задачах - это именно то, что надо - показать, что возможны оба варианта и показать, какова вероятность того, что объект принадлежит одному классу или другому. Для других задач (их тоже много) надо дать абсолютно однозначный ответ, к какому классу принадлежит ответ. В этом случае ответ по первому варианту с помощью функции срабатывания приводится к двузначной логике "0"-"1". При этом надо понимать, что ответ будет с ошибкой, которую надо бы еще и оценить. (см. ниже)

2)как score() оценивает работу модели,если на вход подаются x_train и y_train? Хотя по логике же должны y_pred и y_train? И вообще что значит оценка работы?

Именно x_train и y_train и должны подаваться на вход этой функции. Функция, зная, каким должен быть отклик модели y_train выполняет задачу классификации, а потом сравнивает полученный отклик с ожидаемым для каждого x_train. Оценка означат показатель accuracy для (бинарной) классификации и значение коэффициента детерминации R^2 для моделей регрессии.

и последнее, почему мы всё присваиваем разным переменным?

Почему нельзя a=predict(x_test) b=a.predict_proba()

Что-то странное у вас написано. При этом вы просите нас рассказать вам, почему вы их так присваиваете? По идее должно быть

а=model.predict(x_test)
а=model.predict_proba(x_test)

а хотите присваивать разным - то

а=model.predict(x_test)
b=model.predict_proba(x_test)

Вообще-то ответы на все эти вопросы можно найти прямо в документации: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

то есть сколько раз не вызывай predict(), коэффициенты или же веса будут одинаковые

А почему они должны быть разными, если вы используете одну и ту-же модель и одни и те-же данные?

Еще раз повторю - знание формата команд fit, predict или score НЕ делает человека специалистом по машинному обучению.

→ Ссылка