我正在尝试进行二进制分类。我只有 6 个输入变量和 1 个输出变量。标签 1 是 1554 条记录,标签 0 是 3558 条记录。
正如你在下面看到的,我从这两个中得到的指标是不同的。我不确定我可以分享更多关于这个问题的其他信息。我只是尝试通过不同的方法进行分类
# statsmodel logreg 的代码
model = smm.Logit(y_train, X_train_std) #std indicates standardized inputs
result=model.fit()
result.summary()
y_pred = result.predict(X_test_std)
y_pred[y_pred > 0.5] = 1
y_pred[y_pred < 0.5] = 0
cm = confusion_matrix(y_test, y_pred)
print(cm)
print("Accuracy is ", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
print("ACU score is ",roc_auc_score(y_test, y_pred))
print("Recall score is",recall_score(y_test,y_pred))
print("Precision score is",precision_score(y_test,y_pred))
print("F1 score is",f1_score(y_test,y_pred))
# scikit-learn 的代码
#log reg optimized parameters
op_param_grid = {'C': [0.01],'class_weight':['balanced'],'penalty': ['l1'], 'solver': ['saga'],'max_iter':[200]}
logreg=LogisticRegression(random_state=41)
logreg_cv=GridSearchCV(logreg,op_param_grid,cv=10,scoring='f1')
logreg_cv.fit(X_train_std,y_train)
我可以知道为什么会发生这种情况,我应该依靠哪一个?
在这两种方法上期望相同的结果是不对的吗?他们的工作方式不同吗?
任何人都可以帮忙吗?
