Я пытаюсь использовать пакет pymatch , но получаю сообщение об ошибке Error: Perfect separation detected, results not available
. Я проверял несколько раз, мой набор данных не равен. Он содержит 260 тыс. Строк для контроля и 50 тыс. Для лечения и имеет различные средние значения. У меня только 5 переменных, все integers
или Floats
округлены до 2 десятичных знаков.
Моя цель состоит в том, чтобы сопоставить некоторых обработанных клиентов с необработанными для дальнейшего анализа на основе сопоставления баллов склонности.
Я уже убрал выбросы, так как, очевидно, он не может справиться с ними хорошо. Я также округлил десятичные дроби до 2 позиций после запятой. Я попытался использовать только 2 переменные из всего набора данных. Ничего не сработало.
d = {'Customer': ['A','B','C','D'], 'Basket_Size': [30, 40,25,30], 'Miles_away': [5.2, 15.4,16.3,7.2], 'was_treated': [1, 0,0,1]}
df = pd.DataFrame(data=d)
df
test = df[df.was_treated== 1]
control = df[df.was_treated== 0]
m = Matcher(test, control, yvar="was_treated", exclude=['Customer'])
## until here it runs perfectly fine
# output:
#Formula:
#was_treated~ Basket_Size+Miles_away
#n majority: 2
#n minority: 2
## this now throws the error
np.random.seed(20170925)
m.fit_scores(balance=True, nmodels=20)
# output:
# Error: Perfect separation detected, results not available
# Fitting Models on Balanced Samples: 1\20
Я ожидаю вывод типа Average Accuracy: 78%
, но получаю Average Accuracy: nan%
и ошибку Error: Perfect separation detected, results not available