首页 > 解决方案 > 隔离森林打印异常

问题描述

使用 Isolation Forest 作为一种在我的数据集上查找异常的方法。数据集本身只有一列,大约有 8000 行。这是我的代码

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
from sklearn.model_selection import train_test_split

data = pd.read_csv('MyDataset.csv')

X_train, X_test, _, _ = train_test_split(data['ColumnA'], data['ColumnA'], test_size=0.2)
clf = IsolationForest(max_samples='auto',contamination=0.003,behaviour='new') 
clf.fit(X_train.values.reshape(-1, 1))
if_scores = clf.decision_function(X_train.values.reshape(-1, 1))
if_anomalies=clf.predict(X_test.values.reshape(-1, 1))
print('Number of outliers detected:',end='')
print(sum(if_anomalies==-1))
outliers=X_test[if_anomalies==-1]

plt.scatter(X_test.index, X_test.values,c='g')
plt.scatter(outliers.index, outliers.values.reshape(1, -1),c='r')
plt.show()

解释代码

这是我丢失的部分

即使我看到异常的数量并查看它们在图中的位置。如何获取显示被视为异常的数字/值的列表。

标签: pythonscikit-learnunsupervised-learninganomaly-detection

解决方案


推荐阅读