Model1 / app.py
Shreyas5555555's picture
Create app.py
d04f17c verified
import gradio as gr
from joblib import load
import numpy as np
# Load the model once globally
model = load('model1.joblib')
def model1(data):
input_array = np.array([data]).reshape(1, -1)
prediction = model.predict(input_array)[0]
return prediction
def process_input(six_digit_str):
if len(six_digit_str) != 6 or not six_digit_str.isdigit():
return "Error: Please enter a 6-digit number string."
# Create 2-digit windows with '3.' prefix
a = float("3." + six_digit_str[0:2])
b = float("3." + six_digit_str[1:3])
c = float("3." + six_digit_str[2:4])
d = float("3." + six_digit_str[3:5])
e = float("3." + six_digit_str[4:6])
# Predict
pred1 = model1(a)
pred2 = model1(b)
pred3 = model1(c)
pred4 = model1(d)
pred5 = model1(e)
# Errors
err1 = pred1 - b
err2 = pred2 - c
err3 = pred3 - d
err4 = pred4 - e
errors = [err1, err2, err3, err4]
avg_error = sum(errors) / len(errors)
# Distances from average
distances = [abs(e - avg_error) for e in errors]
nearest_indices = sorted(range(len(distances)), key=lambda i: distances[i])[:2]
nearest_values = [errors[i] for i in nearest_indices]
all_three = nearest_values + [avg_error]
# Adjust pred4
ads_list = []
for err in errors:
ads = pred4 + err if avg_error > 0 else pred4 - err
ads_list.append(ads)
# Round and extract 2nd decimal digit
rounded = [round(val, 2) for val in ads_list]
second_decimal_digits = [int(str(f).split(".")[1][1]) if '.' in str(f) and len(str(f).split(".")[1]) > 1 else 0 for f in rounded]
return second_decimal_digits
# Gradio Interface
demo = gr.Interface(fn=process_input,
inputs=gr.Textbox(label="Enter 6-digit number string"),
outputs=gr.JSON(label="Second Decimal Digits"))
demo.launch()