首页 > 解决方案 > Scikit-learn : roc_auc_score 根据地面实况是否是热编码返回不同的值

问题描述

不知道发生了什么,但是:

import numpy as np
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score
y_true = np.random.randint(np.ones((100,1))*5)
y_scores = RandomForestClassifier().fit(np.random.rand(100,5),y_true.ravel()).predict_proba(np.random.rand(100,5))
oh=OneHotEncoder()
print(roc_auc_score(oh.fit_transform(y_true.reshape(-1, 1)).toarray(), y_scores,multi_class='ovo'))
print(roc_auc_score(y_true.ravel(), y_scores,multi_class='ovo'))

不断给我不同的输出(显然我希望它每次运行它时都会给出不同的值,但我希望一个热编码和非一个热编码的真值返回相同的东西。示例输出:

0.5141240772057938
0.5242429384699121

任何人都知道我做错了什么(只是想了解我是否遗漏了什么)。

标签: scikit-learn

解决方案


推荐阅读