Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,61 +1,27 @@
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
-
import numpy as np
|
4 |
-
import matplotlib.pyplot as plt
|
5 |
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
|
11 |
-
#
|
12 |
-
|
13 |
|
14 |
-
#
|
15 |
-
anomalies =
|
16 |
-
anomaly_indices = anomalies.index.tolist()
|
17 |
|
18 |
-
|
19 |
-
|
20 |
-
def plot_anomalies(series, anomalies):
|
21 |
-
plt.figure(figsize=(12, 6))
|
22 |
-
plt.plot(series, label='Original Series')
|
23 |
-
plt.scatter(anomalies, series[anomalies], color='red', label='Anomalies')
|
24 |
-
plt.legend()
|
25 |
-
plt.title('Time Series with Anomalies')
|
26 |
-
plt.xlabel('Date')
|
27 |
-
plt.ylabel('Value')
|
28 |
-
plt.show()
|
29 |
-
|
30 |
-
# Função para o Gradio
|
31 |
-
def anomaly_detection_app(time_series_txt, window_size=7, threshold=2.5):
|
32 |
-
# Carregar a série temporal a partir do arquivo de texto
|
33 |
-
df = pd.read_csv(time_series_txt, header=None, names=["Date", "Value"])
|
34 |
-
df['Date'] = pd.to_datetime(df['Date'])
|
35 |
-
df = df.set_index('Date')
|
36 |
-
|
37 |
-
# Detectar anomalias na série temporal usando a média móvel
|
38 |
-
anomaly_indices = detect_anomalies(df['Value'], window_size=window_size, threshold=threshold)
|
39 |
-
|
40 |
-
# Plotar a série temporal com as anomalias destacadas
|
41 |
-
plot_anomalies(df['Value'], anomaly_indices)
|
42 |
-
|
43 |
-
# Retornar os pontos de anomalia como um dataframe
|
44 |
-
anomaly_points = pd.DataFrame({'Date': df.index[anomaly_indices], 'Value': df['Value'][anomaly_indices]})
|
45 |
-
|
46 |
-
return anomaly_points
|
47 |
|
48 |
# Interface do Gradio
|
49 |
iface = gr.Interface(
|
50 |
-
fn=
|
51 |
-
inputs=
|
52 |
-
gr.inputs.File(label="Carregar série temporal (TXT)"),
|
53 |
-
gr.RangedSlider(minimum=1, maximum=30, default=7, label="Tamanho da janela da média móvel"),
|
54 |
-
gr.RangedSlider(minimum=0.1, maximum=5, default=2.5, label="Threshold para anomalias (em desvios-padrão)")
|
55 |
-
],
|
56 |
outputs=gr.outputs.Dataframe(type="pandas", label="Pontos de Anomalia"),
|
57 |
title="Análise de Anomalias em Séries Temporais",
|
58 |
-
description="Este aplicativo detecta anomalias em uma série temporal carregada através de um arquivo de texto (TXT)
|
59 |
live=True
|
60 |
)
|
61 |
|
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
|
|
|
|
3 |
|
4 |
+
# Função para detectar anomalias
|
5 |
+
def detect_anomalies(file_path):
|
6 |
+
# Carregue o arquivo txt para um DataFrame
|
7 |
+
df = pd.read_csv(file_path, sep=",")
|
8 |
|
9 |
+
# Calcule a diferença absoluta entre cada valor e o valor médio
|
10 |
+
df["delta"] = abs(df["value"] - df["value"].mean())
|
11 |
|
12 |
+
# Encontre os valores com a maior diferença absoluta
|
13 |
+
anomalies = df.loc[df["delta"] > df["delta"].quantile(0.95)]
|
|
|
14 |
|
15 |
+
# Retorne os valores anômalos como um dataframe
|
16 |
+
return anomalies
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
# Interface do Gradio
|
19 |
iface = gr.Interface(
|
20 |
+
fn=detect_anomalies,
|
21 |
+
inputs=gr.inputs.File(label="Carregar série temporal (TXT)"),
|
|
|
|
|
|
|
|
|
22 |
outputs=gr.outputs.Dataframe(type="pandas", label="Pontos de Anomalia"),
|
23 |
title="Análise de Anomalias em Séries Temporais",
|
24 |
+
description="Este aplicativo detecta anomalias em uma série temporal carregada através de um arquivo de texto (TXT).",
|
25 |
live=True
|
26 |
)
|
27 |
|