首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Predict_proba for IsolationForest

Predict_proba for IsolationForest
EN

Stack Overflow用户
提问于 2019-12-06 11:48:59
回答 1查看 3.1K关注 0票数 2

我试着用隔离森林用于孤立点检测(欺诈检测)。如果我运行下面的代码(使用培训和测试集):

代码语言:javascript
复制
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对象没有属性“predict_proba”

我正在寻找一个数组,它给出了预测值属于哪一类(孤立点或不属于)的概率。

我的X_test看起来像:

代码语言:javascript
复制
A  B  C
11 1  0
11 3  0
11 0  1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 12:17:05

这个模块中没有一个predict_proba,因为它不使用概率来评估每个样本的异常值,而是使用分数。

查看您提供的文档,使用决策函数对每个样本进行分类,其公式如下:

代码语言:javascript
复制
decision_function = score_samples - offset_. offset_

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

代码语言:javascript
复制
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]]))

在以下方面的成果:

代码语言:javascript
复制
[ 1  1 -1] 
[0.33644293 0.35190077 0.62865009]

对每个样本减去偏移量(默认为-0.5)后,如果返回的结果为正,则为inlier,否则为异常值。

希望能帮上忙。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59212581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档