【问题标题】:How to use Isolation Forest in python如何在python中使用隔离森林
【发布时间】:2021-03-20 00:26:08
【问题描述】:

我正在检测未标记数据集中的异常值(数据未标记为内点/异常值),并且我正在 Python 中使用隔离森林(scikit-learn 库)。
我想获得数据集中数据的异常分数,所以我使用以下代码:

if_model = IsolationForest(max_samples=100)
if_model.fit(dataset)
anomaly_score = if_model.score_samples(dataset)

但是我有一些问题:

  • 之前的过程是否正确,或者我应该将我的数据集分成两部分,以便在一组上执行拟合并在另一组上获得异常分数?
  • 方法predict有什么用处?我应该如何使用它?

【问题讨论】:

    标签: python scikit-learn random-forest anomaly-detection isolation-forest


    【解决方案1】:
    • 要回答您的第一个问题,您不需要拆分数据集。监督算法需要测试集。如果数据中的每一行都有预期结果,则可以将模型的输出与预期结果进行比较,以评估模型的执行情况。此数据不能用于拟合模型,或者模型可能在不拟合其他数据的情况下很好地拟合这些特定的数据行,而您不会知道。然而,隔离森林是一种无监督算法。您没有用于比较隔离林结果的异常行列表,因此没有必要保留数据来验证模型是否有效。

    • 为了回答第二个问题,predict 给出了关于每一行是否以数组形式存在异常的是或否(1 或 0)答案。 score_samples 返回一个数字,表示每行的异常程度,但不会告诉您它是否异常。见sklearn documentation

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 2019-07-11
      • 1970-01-01
      • 2019-06-29
      • 2015-07-16
      • 2018-09-10
      • 2020-11-16
      • 2019-08-02
      • 2019-07-20
      相关资源
      最近更新 更多