Логистическая регрессия в 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
и последнее, почему мы всё присваиваем разным переменным?
Почему нельзя
a=predict(x_test)b=a.predict_proba()
Я подозреваю,что нам это сошло с рук,из-за того что я определил заранее random_state, то есть сколько раз не вызывай predict(), коэффициенты или же веса будут одинаковые. Но я не сильно уверен в этом)
Ответы (1 шт):
В предыдущем вашем вопросе вам посоветовали прочитать хотя-бы какую-нибудь литературу касательно темы, ну хоть для младших школьников. Похоже, вы к совету не прислушались. Потому как по вопросу видно, что никакого настоящего продвижения в понимании того, чем вы занимаетесь у вас как не было так и нет, ну разве что вы посмотрели форматы еще трех команд, так и не поняв, что они делают и вообще - зачем это все.
Тем не менее попробую ответить
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 НЕ делает человека специалистом по машинному обучению.