Оценка логистической регрессии с использованием перекрестной проверки и ROC - PullRequest
0 голосов
/ 18 ноября 2018

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

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

X = df.drop('Survived', axis=1)
y = df['Survived']

skf = StratifiedKFold(n_splits=5)
logmodel = LogisticRegression()

i=0
for train, test in skf.split(X,y):
    logmodel.fit(X[train], y[train])   # error occurs here
    predictions = logmodel.predict_proba(X[test])
    # a bunch of code that I haven't included which creates the ROC curve
    i += 1

Ошибка возникает в четвертой и последней строке и возвращает список целых чисел, за которым следует «не в индексе»

Я действительно не понимаю, чтопроблема?

Это мое понимание кода: сначала я создаю экземпляр как стратифицированной kfold, так и логистической регрессии.Пример многослойного kfold утверждает, что должны быть сделаны пять сгибов.Далее я говорю, что для каждого поезда и контрольного сгиба в моем наборе данных X, y я подгоняю логистическую модель к данным, а затем создаю список прогнозов для различных вероятностей на основе тестовых данных.Позже (эта часть не показана) Я создам ROC-кривую для каждого k-кратного смещения данных.

Опять же, я не очень понимаю, в чем проблема, но, возможно, кто-то может прояснить.Моя работа более или менее скопирована непосредственно по этой ссылке в sklearn: https://scikit -learn.org / stable / auto_examples / model_selection / plot_roc_crossval.html # sphx-glr-auto-examples-model-selection-plot-roc-crossval-ру

1 Ответ

0 голосов
/ 18 ноября 2018

Пожалуйста, добавьте больше деталей, чтобы они могли быть действительно изучены.Предпочтительно (и фактически требуется) фрагмент кода, который можно запустить, чтобы увидеть ошибку.

С первого взгляда вы берете кадр данных pandas и подаете его в модель, и это делается неправильно.См. Следующие строки, которые являются правильными для извлечения данных и подачи их в модель:

X = df.drop('Survived', axis=1).values
y = df['Survived'].values

Суффикс .values обращается к объекту данных numpy, который хранится в этих кадрах данных, что согласуется с остальнымикод.

Надеюсь, это поможет вам исправить ошибку.

Удачи!

...