Predict_proba for IsolationForest

时间:2019-12-06 11:48:59

标签: python scikit-learn

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。如何使用DecisionTrees可以使用的predict_proba。在文档中是否有针对IsolationTree的功能未提及?

运行时:iso.predict_proba(X_test),我收到此错误:

  

AttributeError:“ IsolationForest”对象没有属性“ predict_proba”

我正在搜索一个数组,该数组使我有可能该捕食属于哪个类别。

我的X_test如下:

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

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

1 个答案:

答案 0 :(得分:1)

此模块中没有 predict_proba ,因为它不使用概率将每个样本评估为异常值,而是使用得分。

请参阅提供的文档,使用具有以下公式的决策函数对每个样本进行分类:

decision_function = score_samples - offset_. offset_

所以您可能想要的是 score_samples 。使用示例数据:

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)后,如果返回结果为正,则为离群值,否则为离群值。

希望这很有帮助。