隔离Fores

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

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

我目前正在使用Python中的IsolationForest方法识别数据集中的异常值,但不完全理解sklearn上的示例:

http://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html#sphx-glr-auto-examples-ensemble-plot-isolation-forest-py

具体地说,这张图实际上向我们展示了什么?观察值已经被定义为正常值/异常值——所以我假设等高线图的阴影部分表明该观察值是否确实是异常值(例如,异常值较高的观察值位于阴影较暗的区域?)。在

最后,下面的代码部分是如何被实际使用的(特别是y_pred函数)?在

# fit the model
clf = IsolationForest(max_samples=100, random_state=rng)
clf.fit(X_train)
y_pred_train = clf.predict(X_train)
y_pred_test = clf.predict(X_test)
y_pred_outliers = clf.predict(X_outliers) 

我猜它只是为了在有人想打印输出时提供完整性?在

提前感谢您的帮助!在


Tags: testautoplottrainexamplespredictfit阴影
1条回答
网友
1楼 · 发布于 2024-06-25 23:01:42

使用您的代码

在您的代码之后,只需打印y\u pred\u离群值

# fit the model
clf = IsolationForest(max_samples=100, random_state=rng)
clf.fit(X_train)
y_pred_train = clf.predict(X_train)
y_pred_test = clf.predict(X_test)
y_pred_outliers = clf.predict(X_outliers) 

print(y_pred_outliers)

因此,对于每个观测值,根据拟合模型,它可以判断是否(+1或-1)将其视为异常值。

使用虹膜数据的简单示例

^{pr2}$

结果:

[ 1  1 -1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1]

[-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]

解释:

print(y_pred_test)只返回1。这意味着X检验的所有样本都不是离群值。在

另一方面,print(y_pred_outliers)只返回-1。这意味着X_异常值的所有样本(虹膜数据总共150个)都是异常值。在

希望这有帮助

相关问题 更多 >