| 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() | |