python - 隔离森林打印异常
问题描述
使用 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()
解释代码
- 读取数据集
- 将列/数据拆分为训练和测试部分
- 从 scikit-learn 运行隔离林
- 显示异常数量
- 将异常绘制成图表
这是我丢失的部分
即使我看到异常的数量并查看它们在图中的位置。如何获取显示被视为异常的数字/值的列表。
解决方案
推荐阅读
- gluu - Gluu - 如何将新的本地 Gluu 用户写入/导出到 Active Directory LDAP?
- python - 在 Python 中从数据框中打印一个元素
- java - 如何在java中创建从右到左的数字模式?
- android - 在 Android 上使用 TalkBack 手势导航时可以跳出 RecyclerView 吗?
- amazon-cloudformation - 具有多种资源的 Cloudformation 模板
- firebase - 如何在 Flutter 中从 Firebase 存储中加载和删除图像?
- python - 如何随机化我的球与桨的碰撞位置?乒乓球游戏
- excel - 在 Powershell 中使用 ComOject Excel.Application 选择活动工作表中的所有单元格
- c# - 接口和集合中的协方差
- vim - 你如何重新映射 :w 到 :w! 和 :q 到 :q! 在我的 vimrc 中?