Начнем с того, что ваши классы слегка дисбалансированы, примерно 71% составляет 1:
credit_test["Class"].value_counts()
1 138
0 54
Когда вы выполняете регрессию logisti c, она оценивает среднее значение, которое является логарифмическим коэффициентом, равным 1, а затем лог-шансы, связанные с вашей зависимой переменной. Если вы посмотрите на коэффициенты:
[clf.intercept_,clf.coef_]
[array([0.59140229]), array([[0.9820343]])]
Перехват кажется правильным, то есть среднее значение составляет около exp (0,59140229) / (1 + exp (0,59140229)) = 0,643. Ваша независимая переменная CreditHistory.Critical может быть только 0 или 1, и ваш коэффициент для этого 0,9820343, результат всегда будет p> 0,5, что означает все метки 1.
Вы можете соответствовать модели без перехват, и видите, что прогноз не смещен, но в основном он не очень точен:
clf = LogisticRegression(random_state=0,fit_intercept=False).fit(X, y)
y_pred=clf.predict(credit_test[['CreditHistory.Critical']])
confusion_matrix(y_pred=y_pred, y_true=y_test)
array([[42, 12],
[84, 54]])
Вы можете попробовать согласовать модель с несколькими другими переменными, чтобы получить информацию, она должна дать вам лучшие результаты.