在python pyod中获得ROC曲线下的面积?

我有5,000个观测值的数据。我将数据集分为两个部分:变量(X_train)和标记目标(y_train)。我使用pyod是因为它似乎是最受欢迎的用于异常检测的Python库。

我使用以下代码使模型适合数据:

from pyod.models.knn import KNN
from pyod.utils import evaluate_print

clf = KNN(n_neighbors=10,method='mean',metric='euclidean')
clf.fit(X_train)
scores = clf.decision_scores_

现在已拟合模型,并且我有可能观察到的异常值存储在scores中。我手动计算了ROC曲线下的面积,结果为0.69。

我注意到在使用时,这是相同的结果

evaluate_print('KNN with k=10',y=y_train,y_pred=scores)

哪个返回:KNN with k=10 ROC:0.69,precision @ rank n:0.1618

我想知道pyod中是否有特定函数,该函数只会返回0.69。

xiaohui1007 回答:在python pyod中获得ROC曲线下的面积?

我不知道pyod,但是For i As Integer = 1 To 1000 Dim Watch As Stopwatch = Stopwatch.StartNew() Console.WriteLine(Watch.ElapsedMilliseconds & " - Processing Time1") Console.WriteLine(Watch.ElapsedMilliseconds & " - Processing Time2") Next 拥有roc_auc_score或sklearn来完成这项工作。它非常易于使用,我想与您的项目一起工作只有一两行。

auc
,

pyod 包本身从 sklearn.metrics.roc_auc_score 计算 ROC。您可以在 pyod 存储库的 notebooks 文件夹中的 Benchmark.ipynb 中看到。因此,要仅获取 ROC,请使用以下命令: from sklearn.metrics import roc_auc_score

roc = round(roc_auc_score(y_test,test_scores))

本文链接:https://www.f2er.com/3028092.html

大家都在问