При выполнении логистической регрессии я получаю ошибку: LinAlgError: Singular matrix - PullRequest
0 голосов
/ 01 декабря 2018

Я использую данные клуба Lending.Я использую следующий код.

У меня есть фрейм данных X, содержащий все столбцы предикторов, и Y, содержащий выходные данные, является ли заем хорошим или плохим

#Here we change the good loans to 1 and bad loans to 0
mask = (Y['loan_condition'] == 'Good Loan')
Y['loan_condition'] = np.where(mask, 1, 0)


#Train Test Split and performing SMOTE
from sklearn.model_selection import train_test_split
from imblearn.over_sampling import SMOTE
os = SMOTE(random_state=0)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, 
random_state=0)
columns = X_train.columns
os_data_X,os_data_Y=os.fit_sample(X_train, Y_train)
os_data_X = pd.DataFrame(data=os_data_X,columns=columns )
os_data_Y= pd.DataFrame(data=os_data_Y,columns=['loan_condition'])


X=np.array(os_data_X)
Y=np.array(os_data_Y)


#Performing Logistic Regression
import statsmodels.api as sm
logit_model=sm.Logit(Y,X)
result=logit_model.fit()
print(result.summary2())

ОШИБКА / ПРЕДУПРЕЖДЕНИЕ:

Внимание! Превышено максимальное количество итераций.Текущее значение функции: inf Итерации: 35

LinAlgError: Singular matrix

Может кто-нибудь помочь мне здесь?Помощь будет оценена

1 Ответ

0 голосов
/ 05 апреля 2019

У вас есть LinAlgError: Singular matrix, это означает, что ваша X-матрица линейно зависима (<=> дискриминант равен нулю).Другими словами, Xn = akXk + ... + amXm

Таким образом, вы должны изменить свою X-матрицу.Если вы посмотрите на свои показатели корреляции, это может принести вам некоторые идеи.Или вы можете испортить фиктивные переменные.Например, если у вас есть 3 категории: кошка, собака и рыба, вам нужно только 2, а не 3, отмеченные нулями и единицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...