Cross_val_predict: получение предсказанных значений и вероятностей за один шаг - PullRequest
0 голосов
/ 22 января 2019

В следующем примере сценария выводятся прогнозируемые значения и прогнозируемые вероятности:

from sklearn import datasets, linear_model
from sklearn.model_selection import cross_val_predict
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
lg = linear_model.LogisticRegression(random_state=0, solver='lbfgs')
y_prob = cross_val_predict(lg, X, y, cv=4, method='predict_proba')
y_pred = cross_val_predict(lg, X, y, cv=4)

y_prob[0:5]
y_pred[0:5]

Я попытался выполнить следующее безуспешно:

test = cross_val_predict(lg, X, y, cv=4, method=['predict','predict_proba'])

Вопрос: Есть ли способ получить как прогнозируемые значения, так и прогнозируемые вероятности за один шаг , без проведения перекрестной проверки дважды? Кроме того, я должен убедиться, что значения и вероятности соответствуют одним и тем же входным данным.

1 Ответ

0 голосов
/ 23 января 2019

Значения y_pred могут быть получены из y_prob:

# The probabilities as in the original code sample
y_prob = cross_val_predict(lg, X, y, cv=4, method='predict_proba')

import numpy as np
# Get a list of classes that matches the columns of `y_prob`
y_sorted = np.unique(y)
# Use the highest probability for predicting the label
indices = np.argmax(y_prob, axis=1)
# Get the label for each sample
y_pred = y_sorted[indices]

Теперь может случиться, что y_pred из cross_val_predict не соответствует y_pred здесь во всех случаях,Это происходит, когда есть несколько классов с одинаковой наибольшей вероятностью, как в вашем примере кода.Например, прогнозируемые вероятности равны нулю для всех классов для первой выборки.В любом случае, мне кажется, что логистическая регрессия (то есть фактически классификация) не подходит для набора данных диабета.

Обоснование y_sorted см. cross_val_predict docs:

метод: строка, необязательный, по умолчанию: 'Forect'

Вызывает переданное имя метода переданной оценки.Для метода ='pregnet_proba 'столбцы соответствуют классам в отсортированном порядке.

...