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

如何在拟合 Sklearn 估计器和转换器之前手动指定正类

如何解决如何在拟合 Sklearn 估计器和转换器之前手动指定正类

我正在尝试使用来自 UCI ML Repo 的 relevant dataset 预测信用卡批准。问题是目标将信用卡申请编码为“+”表示批准,“-”表示拒绝。

由于目标中有更多被拒绝的申请,所有评分者、评估者都将被拒绝的类视为正类,而其他类则应为正类。正因为如此,我的混淆矩阵都搞砸了,因为我认为所有的真阳性和真阴性,假阳性和假阴性都颠倒了:

enter image description here

如何手动指定正类?

解决方法

我不知道有哪些 scikit-learn 估计器或转换器可以让您将正类和负类标识符作为参数进行翻转。但我可以想到两种方法来解决这个问题:


方法 1:在拟合估计器之前自己转换数组标签

对于 numpy 数组可以轻松实现:

y = np.array(['+','+','-','-'])
y_transformed = [1 if i == '+' else 0 for i in y]

还有熊猫 Series 对象:

y = pd.Series(['+','-'])
y_transformed = y.map({'+': 1,'-': 0})

在这两种情况下,输出都是 [1,1,0]


方法 2:您在 labels

中定义 confusion_matrix 参数

scikit-learn 的 confusion_matrix 有一个参数 labels,可以让您重新排序标签。像这样使用:

y_true = np.array([1,0])
y_pred = np.array([1,0])

print(confusion_matrix(y_true,y_pred))
# output
[[2 0]
 [1 2]]


print(confusion_matrix(y_true,y_pred,labels=[1,0]))
# output
[[2 1]
 [0 2]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。