使用Python在一个简单的隔离林示例中绘制异常

2024-04-30 06:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。我正在创建一个非常简单的模型,可以检测时间序列数据中的异常,在我的情况下,它是任意温度读数(用于检测高温)

1

no | temp
1  | 36.5
2  | 39.8
3  | 37.4
4  | 40.2
5  | 40.8

显而易见,有2个峰值或异常(以粗体突出显示)。isolationForest模型很容易检测到这种异常,dataframedf['anomalies']返回异常的索引位置

下面是报告异常(数据集中的位置)的代码片段

df['anomaly']=model.predict(df[['temp']])
anomaly=df.loc[df['anomaly']==-1]
print("Anomalies are detected at these positions")
anomaly_index=list(anomaly.index)
print(anomaly_index)

然后,上述代码以索引位置的形式预测异常(在数据集中),例如[43,26,126]

基于此,我有两个问题无法解决:

  1. 如何从anomaly_index索引位置获取值。(例如,在检测到这些温度异常后,我希望提取相应的温度值(例如39.8和40.8),以便对其执行进一步的操作
  2. 我可以绘制原始值的数据帧,但我想在图中叠加/超级施加异常值或异常(例如,数据集中的所有温度读数,以及这两个异常)

我尝试了所有可能的方法,但由于我缺乏python技能,我被困在这个问题上。
有人能帮忙吗

干杯


Tags: 数据代码模型dfindex情况序列温度
1条回答
网友
1楼 · 发布于 2024-04-30 06:10:48

您可以按照以下步骤操作:

步骤1:定义一个阈值,如果任何超过该阈值的值将被视为异常

步骤2:将所有值与阈值进行比较并存储

你可以试试这个

     THRESHOLD = 39
     df['threshold'] = THRESHOLD
     df['anomaly'] = df.temp > df.threshold

相关问题 更多 >