Python - 用于分类的指标输出 y 是一个对象

问题描述

我真的需要你的帮助来解决以下问题。

我运行一些带有结果变量 y 的分类模型,它是一个具有 2 个值的对象:True / False。 我成功获得了训练集和测试集的 AUC 值。 但是,当我尝试获取混淆矩阵时会出现一些错误

我的预期输出与 R 中的输出类似:混淆矩阵、准确度、灵敏度、特异性、正预测值、平衡准确度、F1 和绘图 ROC。我附上了一张我希望在 Python 中拥有的输出照片(在 R 中)。

Outputs expected

任何人都可以帮助我如何获得这些输出

有没有像R一样简单的语法,当我们调用模型名称时,所有的输出都会出现?

你会发现代码如下:

非常感谢您的帮助。

target 表示训练数据上的 y

tager_test 表示测试数据上的 y 变量

from sklearn.linear_model import LogisticRegression,LogisticRegressionCV,SGDClassifier
from sklearn.linear_model import RidgeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_validate
from sklearn.metrics import make_scorer,roc_auc_score
from sklearn.metrics import roc_curve
from sklearn.metrics import confusion_matrix
from sklearn.inspection import permutation_importance
from sklearn.neighbors import KNeighborsClassifier

estimators={
'logistic' : LogisticRegression(solver='newton-cg',penalty='none'),'d_tree' : DecisionTreeClassifier(),'knn' : KNeighborsClassifier(n_neighbors=5,weights='distance',algorithm='auto')
}

for model_name,model in estimators.items():
model.fit(data_naive_dummy_train,target)
pred_train = model.predict_proba(data_naive_dummy_train)[:,1]
pred_test = model.predict_proba(data_naive_dummy_test)[:,1]
print('========= %s =========' %(model_name))
print('AUC on train set = %f' % (roc_auc_score(target,pred_train)))
print('AUC on test set  = %f' %  (roc_auc_score(target_test,pred_test)))

输出

========= logistic =========
AUC on train set = 0.787936
AUC on test set  = 0.828519
========= d_tree =========
AUC on train set = 1.000000
AUC on test set  = 0.603796
========= knn =========
AUC on train set = 1.000000
AUC on test set  = 0.592163




for model_name,1]
print('========= %s =========' %(model_name))
print('AUC on train set = %f' % (confusion_matrix(target,pred_train)))
print('AUC on test set  = %f' %  (confusion_matrix(target_test,pred_test)))

注意错误

========= logistic =========
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-54-571fdecd9a4d> in <module>()
  4     pred_test = model.predict_proba(data_naive_dummy_test)[:,1]
  5     print('========= %s =========' %(model_name))
  ----> 6     print('AUC on train set = %f' % (confusion_matrix(target,pred_train)))
  7     print('AUC on test set  = %f' %  (confusion_matrix(target_test,pred_test)))

1 frames
/usr/local/lib/python3.7/dist-packages/sklearn/metrics/_classification.py in _check_targets(y_true,y_pred)
  88     if len(y_type) > 1:
  89         raise ValueError("Classification metrics can't handle a mix of {0} "
  ---> 90                          "and {1} targets".format(type_true,type_pred))
 91 
 92     # We can't have more than one value on y_type => The set is no more needed

 ValueError: Classification metrics can't handle a mix of binary and continuous targets

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)