Udyan commited on
Commit
5c23264
·
verified ·
1 Parent(s): 39e6869

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -6
app.py CHANGED
@@ -1,13 +1,72 @@
1
  import gradio as gr
 
 
 
 
 
 
2
 
3
  active_count = 0
 
4
 
5
- def predict(input_data):
6
- global active_count
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  active_count += 1
8
 
9
- # dummy prediction
10
- return f"Active Users (estimated): {active_count}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- iface = gr.Interface(fn=predict, inputs="text", outputs="text")
13
- iface.launch()
 
1
  import gradio as gr
2
+ import csv
3
+ import os
4
+ from datetime import datetime
5
+ import pandas as pd
6
+ from sklearn.linear_model import LinearRegression
7
+ import time
8
 
9
  active_count = 0
10
+ model = None
11
 
12
+
13
+ def log_data(count):
14
+ file_exists = os.path.isfile("usage.csv")
15
+
16
+ with open("usage.csv", "a", newline="") as f:
17
+ writer = csv.writer(f)
18
+
19
+ if not file_exists:
20
+ writer.writerow(["time", "active_users"])
21
+
22
+ writer.writerow([datetime.now(), count])
23
+
24
+
25
+ def train_model():
26
+ global model
27
+
28
+ if not os.path.exists("usage.csv"):
29
+ return None
30
+
31
+ data = pd.read_csv("usage.csv")
32
+
33
+ if len(data) < 2:
34
+ return None
35
+
36
+ data['time'] = pd.to_datetime(data['time'])
37
+ data['time'] = data['time'].astype(int) // 10**9
38
+
39
+ X = data[['time']]
40
+ y = data['active_users']
41
+
42
+ model = LinearRegression()
43
+ model.fit(X, y)
44
+
45
+ def predict(input_text):
46
+ global active_count, model
47
+
48
+ # increase count
49
  active_count += 1
50
 
51
+ # log data
52
+ log_data(active_count)
53
+
54
+ # train model
55
+ train_model()
56
+
57
+ # prediction
58
+ if model:
59
+ current_time = int(time.time())
60
+ pred = model.predict([[current_time]])[0]
61
+ return f"Estimated Active Users: {int(pred)}"
62
+ else:
63
+ return f"Current Active Users (approx): {active_count}"
64
+
65
+ iface = gr.Interface(
66
+ fn=predict,
67
+ inputs="text",
68
+ outputs="text",
69
+ title="Active Users Predictor"
70
+ )
71
 
72
+ iface.launch(share = True)