import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest

# 加载数据集
df = pd.read_csv('1.csv')

# 可视化初始数据分布
plt.scatter(df['x'], df['y'], c='b', s=10, alpha=0.5)
plt.title('初始数据分布')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 训练Isolation Forest模型
clf = IsolationForest(n_estimators=100, max_samples='auto', contamination=0.1, random_state=0)
clf.fit(df)
y_pred = clf.predict(df)

# 可视化离群点
plt.scatter(df[y_pred==-1]['x'], df[y_pred==-1]['y'], c='r', s=30, alpha=0.7, label='离群点')
plt.scatter(df[y_pred==1]['x'], df[y_pred==1]['y'], c='b', s=10, alpha=0.5, label='正常样本')
plt.title('Isolation Forest离群点检测结果')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

这段代码展示了如何使用Python和Scikit-learn库中的Isolation Forest算法进行离群点检测。

代码解释:

  1. 导入必要的库:

    • pandas 用于数据处理和读取CSV文件。
    • numpy 用于数值计算。
    • matplotlib.pyplot 用于数据可视化。
    • sklearn.ensemble 中的 IsolationForest 是用于离群点检测的算法。
  2. 加载数据集:

    • 使用 pd.read_csv('1.csv') 读取名为 '1.csv' 的CSV文件,并将其存储在名为 df 的 Pandas DataFrame 中。
  3. 可视化初始数据分布:

    • 使用 plt.scatter() 函数绘制散点图,展示数据集在 'x' 和 'y' 两个特征上的分布情况。
    • 设置点的颜色、大小和透明度,并添加标题和轴标签以增强可读性。
  4. 训练Isolation Forest模型:

    • 使用 IsolationForest() 函数初始化 Isolation Forest 模型,并设置模型参数:
      • n_estimators: 使用的决策树数量。
      • max_samples: 每个决策树使用的样本数量。
      • contamination: 预期离群点比例。
      • random_state: 随机种子,确保结果可复现。
    • 使用 clf.fit(df) 函数用数据集 df 训练模型。
    • 使用 clf.predict(df) 函数对数据集进行预测,得到每个样本的标签(1 表示正常样本,-1 表示离群点),存储在 y_pred 中。
  5. 可视化离群点:

    • 再次使用 plt.scatter() 函数绘制散点图,这次根据预测结果区分正常样本和离群点,并使用不同的颜色、大小和透明度进行区分。
    • 添加图例、标题和轴标签以增强可读性。

通过运行这段代码,你将获得两张图表:一张展示初始数据的分布,另一张展示 Isolation Forest 算法识别出的离群点。

Python实现Isolation Forest离群点检测及可视化

原文地址: https://www.cveoy.top/t/topic/fVIt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录