import gradio as gr import pickle import numpy as np import json with open("model.pkl", "rb") as f: model = pickle.load(f) with open("metrics.json", "r") as f: metrics = json.load(f) CLASS_NAMES = ["Setosa", "Versicolor", "Virginica"] def predict(sepal_length, sepal_width, petal_length, petal_width): features = np.array([[sepal_length, sepal_width, petal_length, petal_width]]) probabilities = model.predict_proba(features)[0] result = {CLASS_NAMES[i]: float(prob) for i, prob in enumerate(probabilities)} return result demo = gr.Interface( fn=predict, inputs=[ gr.Slider(4.0, 8.0, value=5.8, label="Sepal Length (cm)"), gr.Slider(2.0, 4.5, value=3.0, label="Sepal Width (cm)"), gr.Slider(1.0, 7.0, value=4.0, label="Petal Length (cm)"), gr.Slider(0.1, 2.5, value=1.2, label="Petal Width (cm)"), ], outputs=gr.Label(num_top_classes=3, label="Prediction"), title="Iris Classifier (CI/CD Demo)", description=( "Classify Iris flowers based on sepal and petal measurements. " "Model Performance: 90.0% accuracy. " "This model was automatically trained and deployed via GitHub Actions CI/CD." ), examples=[ [5.1, 3.5, 1.4, 0.2], [6.2, 2.9, 4.3, 1.3], [7.7, 3.0, 6.1, 2.3], ] ) if __name__ == "__main__": demo.launch()