Pred_proba для перекрестной проверки модели

Я хотел бы предсказать вероятность из модели логистической регрессии с перекрестной проверкой. Я знаю, что вы можете получить оценки перекрестной проверки, но можно ли вернуть значения из pred_proba вместо показателей?

# imports
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import (StratifiedKFold, cross_val_score,
                                      train_test_split)
from sklearn import datasets

# setup data
iris = datasets.load_iris()
X = iris.data
y = iris.target

# setup model
cv = StratifiedKFold(y, 10)
logreg = LogisticRegression()

# cross-validation scores
scores = cross_val_score(logreg, X, y, cv=cv)

# predict probabilities
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y)
logreg.fit(Xtrain, ytrain)
proba = logreg.predict_proba(Xtest)

Ответ 1

Теперь это реализовано в рамках программы scikit-learn версии 0.18. Вы можете передать строковый параметр метода в метод cross_val_predict. Документация здесь.

Пример:

proba = cross_val_predict(logreg, X, y, cv=cv, method='predict_proba')

Также обратите внимание, что это часть нового пакета sklearn.model_selection, поэтому вам понадобится этот импорт:

from sklearn.model_selection import cross_val_predict

Ответ 2

Простым обходным путем для этого является создание класса-оболочки, который для вашего случая будет

class proba_logreg(LogisticRegression):
    def predict(self, X):
        return LogisticRegression.predict_proba(self, X)

а затем передать экземпляр его в качестве объекта-классификатора в cross_val_predict

# cross validation probabilities
probas = cross_val_predict(proba_logreg(), X, y, cv=cv)

Ответ 3

Существует функция cross_val_predict, которая дает вам предсказанные значения, но такой функции для "предсказания" еще нет. Возможно, мы могли бы сделать этот вариант.