Python 隔离林打印异常

Python 隔离林打印异常,python,scikit-learn,unsupervised-learning,anomaly-detection,Python,Scikit Learn,Unsupervised Learning,Anomaly Detection,使用隔离林,作为在我的数据集上查找异常的一种方法。数据集本身只有一列,大约有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

使用隔离林,作为在我的数据集上查找异常的一种方法。数据集本身只有一列,大约有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()

解释代码

  • 读取数据集
  • 将列/数据拆分为培训和测试部分
  • 从scikit运行隔离林学习
  • 显示异常的数量
  • 将异常情况绘制成图表
这是我丢失的部分

尽管我看到了异常的数量以及它们在图中的位置。
如何获得被视为异常的数字/值的列表。

您的
异常值
是异常值的一个小数组。你到底有什么问题?@Sergey Bushmanov,我想打印异常值/数字。示例3500号为异常之一。所以我想让打印功能打印所有的异常值
print(outliers)
@Sergey Bushmanov,我有一个关于这个的问题。不确定这是不是真的“Kmeans无法区分哪些是异常值,哪些不是异常值,因此无法绘制ROC曲线。它只是对数据进行聚类”?