预测隔离守则的概率

2024-06-25 23:06:01 发布

您现在位置:Python中文网/ 问答频道 /正文

I try to use an isolation Forest用于异常值检测(欺诈检测)。如果我运行下面的代码(带训练集和测试集):

from sklearn.ensemble import IsolationForest
iso = IsolationForest(random_state=0).fit(X_train)
isopred = iso.predict(X_test)

我得到一个数组:array([1, 1, -1, ..., 1, 1, 1]) 包含1或-1。如何使用predict_proba,我可以用它来DecisionTrees。文档中是否有可用于IsolationTree的功能?没有提到?你知道吗

运行时:iso.predict_proba(X_test)出现以下错误:

AttributeError: 'IsolationForest' object has no attribute 'predict_proba'

我正在搜索一个数组,它给出了预测属于哪个类(异常值与否)的概率。你知道吗

我的X_test看起来像:

A  B  C
11 1  0
11 3  0
11 0  1

y_test.values.ravel()array([0,0,1])


Tags: to代码fromtestanuseiso数组
1条回答
网友
1楼 · 发布于 2024-06-25 23:06:01

在这个模块中没有一个预测概率,因为它不使用概率来评估每个样本作为一个异常值,而是一个分数。你知道吗

查看您提供的文档,每个示例都使用具有以下公式的决策函数进行分类:

decision_function = score_samples - offset_. offset_

所以你可能想要的是给样本打分。使用样本数据:

X = [[-1.1], [0.3], [0.5], [100]]
iso = IsolationForest(random_state=0).fit(X)
iso_pred = iso.predict([[0.1], [0], [90]])
iso_scores = abs(iso.score_samples([[0.1], [0], [90]]))

结果:

[ 1  1 -1] 
[0.33644293 0.35190077 0.62865009]

减去每个样本的偏移量(默认值为-0.5)后,如果返回的结果为正,则为inlier,否则为outlier。你知道吗

希望有帮助。你知道吗

相关问题 更多 >