Python 隔离林打印异常
使用隔离林,作为在我的数据集上查找异常的一种方法。数据集本身只有一列,大约有8000行。 这是我的密码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
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曲线。它只是对数据进行聚类”?