import gradio as gr import numpy as np import pandas as pd import joblib # Load model and preprocessing objects model = joblib.load("model.pkl") scaler = joblib.load("scaler.pkl") label_encoder = joblib.load("label_encoder.pkl") # Define prediction function def predict_class(COUNT, COUNT_CV, STRENGTH, CSP, U_PERCENT, THIN, THICK, NEPS, IPI): # Input as a DataFrame with correct feature names input_df = pd.DataFrame([{ "COUNT": COUNT, "COUNT_CV": COUNT_CV, "STRENGTH": STRENGTH, "CSP": CSP, "U_PERCENT": U_PERCENT, "THIN": THIN, "THICK": THICK, "NEPS": NEPS, "IPI": IPI }]) # Scale input scaled_input = scaler.transform(input_df) # Predict pred_index = model.predict(scaled_input)[0] # Decode class label predicted_label = label_encoder.inverse_transform([pred_index])[0] return predicted_label # Build Gradio Interface with gr.Blocks() as demo: gr.Markdown("## 🧵 Textile Mixing Classifier (Scikit-learn Model)") gr.Markdown("Use the sliders to set values and click **Predict** to classify the textile mix.") with gr.Column(): with gr.Row(): COUNT = gr.Slider(7, 50, step=0.5, label="COUNT") COUNT_CV = gr.Slider(0.48, 1.87, step=0.1, label="COUNT_CV") STRENGTH = gr.Slider(62.71, 384.2, step=0.1, label="STRENGTH") with gr.Row(): CSP = gr.Slider(1500, 4755, step=1, label="CSP") U_PERCENT = gr.Slider(6.38, 12.12, step=0.1, label="U_PERCENT") THIN = gr.Slider(0.0, 19, step=0.1, label="THIN") with gr.Row(): THICK = gr.Slider(2.0, 150, step=1, label="THICK") NEPS = gr.Slider(1, 494, step=1, label="NEPS") IPI = gr.Slider(6.0, 646, step=1, label="IPI") output = gr.Textbox(label="Predicted Class") btn = gr.Button("Predict") btn.click(fn=predict_class, inputs=[COUNT, COUNT_CV, STRENGTH, CSP, U_PERCENT, THIN, THICK, NEPS, IPI], outputs=output) demo.launch() # import tensorflow as tf # import gradio as gr # import numpy as np # import joblib # # Load your trained model # model = joblib.load("mixing_prediction_model.pkl") # # Prediction function # def predict(COUNT, COUNT_CV, STRENGTH, CSP, U_PERCENT, THIN, THICK, NEPS, IPI): # features = np.array([[COUNT, COUNT_CV, STRENGTH, CSP, U_PERCENT, THIN, THICK, NEPS, IPI]]) # # pred = model.predict(features)[0] # # mixing_name = le.inverse_transform([pred])[0] # prediction = model.predict(features)[0][0] # return prediction # # Gradio app with custom sliders # with gr.Blocks() as demo: # gr.Markdown("## 🧵 Textile Mixing Predictor (TensorFlow Model)") # gr.Markdown("Adjust the sliders for each feature and get the predicted output.") # with gr.Row(): # with gr.Column(): # COUNT = gr.Slider(minimum=7, maximum=50, step=0.5, label="COUNT") # COUNT_CV = gr.Slider(minimum=0.48, maximum=1.87, step=0.1, label="COUNT_CV") # STRENGTH = gr.Slider(minimum=62.71, maximum=384.2, step=0.1, label="STRENGTH") # with gr.Column(): # CSP = gr.Slider(minimum=1500, maximum=4755, step=1, label="CSP") # U_PERCENT = gr.Slider(minimum=6.38, maximum=12.12, step=0.1, label="U_PERCENT") # THIN = gr.Slider(minimum=0.0, maximum=19, step=0.1, label="THIN") # with gr.Column(): # THICK = gr.Slider(minimum=2.0, maximum=150, step=1, label="THICK") # NEPS = gr.Slider(minimum=1, maximum=494, step=1, label="NEPS") # IPI = gr.Slider(minimum=6.0, maximum=646, step=1, label="IPI") # output = gr.Number(label="Predicted Output") # predict_button = gr.Button("Predict") # # Bind inputs to function # predict_button.click( # fn=predict, # inputs=[COUNT, COUNT_CV, STRENGTH, CSP, U_PERCENT, THIN, THICK, NEPS, IPI], # outputs=output # ) # demo.launch()