Для моей диссертации я пытаюсь построить модель, которая правильно предсказывает модели из моей выборки с помощью модели logit. Во-первых, я столкнулся с проблемой, что у python нет модели logit, а есть только модель логистики. Но с этой логистической моделью я получаю ошибку в коде ниже [logreg.fit(X_train,y_train)]
.
Моя ошибка заключается в следующем: этому Солверу нужны образцы как минимум 2 классов в данных. Ну, мои данные состоят только из единиц и не содержат нулей. Так что эта ошибка верна, в том смысле, что так и должно быть. Есть ли способ обойти эту ошибку, чтобы я мог продолжить анализ, не ища все виды данных, чтобы также получить нули, что будет слишком много времени из-за сложности моей базы данных.
Я уже пытался это исправить, но пока не смог найти ничего, что решило бы эту проблему. Удаление строки, которая предоставляет ошибку, также не было вариантом, потому что это создало много новых проблем в дальнейшем в коде.
feature_cols =['RSIZE','EXRETAVG','NIMTAAVG','TLMTA','CASHMTA','SIGMA','PRICE','MB']
X = df[feature_cols]
y = df.Bankrupt
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)
logreg = LogisticRegression()
logreg.fit(X_train,y_train)
y_pred=logreg.predict(X_test)
cnf_matrix = metrics.confusion_matrix(y_test, y_pred)
print(cnf_matrix)
class_names=[0,1] # name of classes
fig, ax = plt.subplots()
tick_marks = np.arange(len(class_names))
plt.xticks(tick_marks, class_names)
plt.yticks(tick_marks, class_names)
sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap="YlGnBu" ,fmt='g')
ax.xaxis.set_label_position("top")
plt.tight_layout()
plt.title('Confusion matrix', y=1.1)
plt.ylabel('Actual label')
plt.xlabel('Predicted label')
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
print("Precision:",metrics.precision_score(y_test, y_pred))
print("Recall:",metrics.recall_score(y_test, y_pred))
y_pred_proba = logreg.predict_proba(X_test)[::,1]
fpr, tpr, _ = metrics.roc_curve(y_test, y_pred_proba)
auc = metrics.roc_auc_score(y_test, y_pred_proba)
plt.plot(fpr,tpr,label="data 1, auc="+str(auc))
plt.legend(loc=4)
plt.show()