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