微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。