如何解决Python - 用于分类的指标输出 y 是一个对象
我真的需要你的帮助来解决以下问题。
我运行一些带有结果变量 y 的分类模型,它是一个具有 2 个值的对象:True / False。 我成功获得了训练集和测试集的 AUC 值。 但是,当我尝试获取混淆矩阵时会出现一些错误。
我的预期输出与 R 中的输出类似:混淆矩阵、准确度、灵敏度、特异性、正预测值、平衡准确度、F1 和绘图 ROC。我附上了一张我希望在 Python 中拥有的输出照片(在 R 中)。
任何人都可以帮助我如何获得这些输出?
有没有像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 举报,一经查实,本站将立刻删除。