分别用四种不同的方法对时序序列的异常点检测(python代码)

📅 发布时间:2026/7/7 5:36:49 👁️ 浏览次数:
分别用四种不同的方法对时序序列的异常点检测(python代码)
1.时序数据是对第四列Dissolved Oxygen溶解氧进行异常点检测2.四种异常点检测模型2.1.iForest算法对水质记录数据集中的溶解氧Dissolved Oxygen进行异常检测并通过 Isolation Forest 算法识别出异常点。具体流程如下导入所需的库和模块包括 numpy、pandas、matplotlib、sklearn.metrics 中的 roc_auc_score以及 sklearn.ensemble 中的 IsolationForest。设置绘图相关的参数。读取数据集并提取出溶解氧一列。将溶解氧数据转换成二维数组以便后续处理。构建 IsolationForest 模型并通过 fit 方法拟合数据。通过 decision_function 方法获得每个数据点的异常程度并将预测结果保存在 item 变量中。使用 predict 方法预测每个数据点是否为异常点并将预测结果保存在 pre 变量中。由于 Isolation Forest 的预测结果是 -1 表示异常点1 表示正常点因此将预测结果中的 -1 转换成 0。计算预测结果与异常程度之间的 roc_auc_score并输出结果。对预测结果为异常点的数据点进行可视化用红色散点表示。将预测结果为异常点的数据点从 DO 数组中删除并将删除后的数据保存在 DO_copy 变量中。对删除异常点后的数据进行可视化用蓝色线条表示。输出异常点的数量、删除后的数据点数量和 DO_copy 数组的形状。运行结果2.2.Local Outlier Factor局部离群点因子算法这段代码使用了Local Outlier Factor局部离群点因子算法来检测数据集中的异常值离群点。具体来说它读取了一个水质记录的CSV文件提取其中的溶解氧数据Dissolved Oxygen并将其转化为NumPy数组。然后它使用sklearn.neighbors中的LocalOutlierFactor类来创建一个分类器并将溶解氧数据DO输入分类器进行拟合和预测。接着它遍历预测结果将预测为-1的样本点即被分类为离群点用红点标记在图上并将其从原始数据中删除最后将剩下的数据绘制成另一个图形。该代码的主要目的是帮助筛选出数据集中存在的异常值以便进一步的处理。运行结果2.3. OneClassSVM这段代码的主要作用是使用支持向量机SVM来检测水质记录中的异常值outliers。具体来说它通过导入sklearn库中的svm.OneClassSVM函数对数据中的溶解氧Dissolved Oxygen这一列进行处理将其转换为numpy数组后通过调用fit()方法训练SVM模型。然后使用fit_predict()方法来检测数据集中的异常值将检测到的异常值用红色散点图标记出来并输出异常值的个数。最后将所有数据点和异常值在同一张图中绘制出来以便用户查看和分析结果。运行结果2.4。DBSCAN算法代码主要是用DBSCAN算法对水质数据集中的溶解氧数据进行聚类分析。具体实现步骤如下导入所需的库包括numpy、pandas、matplotlib和sklearn.cluster中的DBSCAN。读取水质数据集将其中的溶解氧数据提取出来。构造输入数据将溶解氧数据组成一个二维数组。设置DBSCAN算法的参数包括领域的大小eps和领域内最小点的个数min_samples。构造分类器并对数据进行拟合和预测得到每个样本所属的簇的标签。统计异常值的个数即标签为-1的样本并将其在图中用红色圆圈表示。将统计结果输出并将所有样本的散点图绘制出来其中异常值用红色标记。对代码感兴趣的私信