Логистическая регрессия в Python, набор тестов и набор поездов

file = pd.DataFrame({'name':['s', 'k', 'lo', 'ki'] , 'age':[12, 23, 32, 22], 'marks':[34, 34, 43, 22], 'score':[1, 1, 0, 1]})

Я хотел бы запустить логистическую регрессию с помощью команды:

import statsmodels.formula.api as smf 
logit = smf.logit( 'score ~ age + marks', file)
results = logit.fit() 

Но я получаю ошибку:

"statsmodels.tools.sm_exceptions.PerfectSeparationError:
Perfect separation detected, results not available". 

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

Команда "glm" в R выглядит намного проще, чем Python.

1 ответ

Я тоже сталкивался с подобной ошибкой, когда работал с некоторыми данными. Это связано со свойством данных. Поскольку две группы (оценка =0 и оценка =1) идеально разделены в ваших данных, граница принятия решения может быть где угодно (бесконечное решение). Таким образом, библиотека не может вернуть ни одного решения. Эта фигура показывает ваши данные. Решение 1,2,3 все действительны.

Я запустил это, используя glmnet в Matlab. Ошибка от Matlab гласит:

Предупреждение: расчетные коэффициенты отлично отделяют неудачи от успехов. Это означает, что теоретические лучшие оценки не являются конечными.

Использование большего количества точек данных поможет.

Интересно, что LogisticRegression от scikit-learn работает без нареканий.

Пример кода с использованием scikit-learn для вашей задачи:

import pandas as pd
import numpy as np
from patsy import dmatrices
from sklearn.linear_model import LogisticRegression

file = pd.DataFrame({'name':['s', 'k', 'lo', 'ki'] , 'age':[12, 23, 32, 22], 'marks':[34, 34, 43, 22], 'score':[1, 1, 0, 1]})
# Prepare the data
y,X = dmatrices('score ~ age + marks',file)
y = np.ravel(y)
# Fit the data to Logistic Regression model
model = LogisticRegression()
model = model.fit(X,y)

Чтобы разделить данные на обучение и тестирование, вы можете обратиться к этому: http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html

Другие вопросы по тегам