File size: 2,769 Bytes
c8c2dc1
 
 
 
da6008a
c8c2dc1
da6008a
 
 
 
 
 
d34b17f
da6008a
 
 
 
 
 
c8c2dc1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
da6008a
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
# Import the necessary libraries
import gradio as gr  # Gradio is a library to quickly build and share demos for ML models
import joblib        # joblib is used here to load the trained model from a file
import numpy as np   # NumPy for numerical operations (if needed for array manipulation)
from huggingface_hub import hf_hub_download

HF_TOKEN = 'hf_your_token_here'  # Replace with your actual Hugging Face token

# Replace with your actual Hugging Face model repo ID and file names
# For example, repo_id="username/iris-decision-tree"
# Use repo_type="model" if it's a model repository
model_path = hf_hub_download(
    repo_id="Jesus02/iris-model-clase",
    filename="iris_dt.joblib",      # The model file stored in the HF repo
    repo_type="model"               # Could also be 'dataset' if you're storing it that way
)

# Load the trained model
pipeline = joblib.load(model_path)

# Define a function that takes the four iris measurements as input
# and returns the predicted iris species label.
def predict_iris(sepal_length, sepal_width, petal_length, petal_width):
    # Convert the input parameters into a 2D list/array because
    # scikit-learn's predict() expects a 2D array of shape (n_samples, n_features)
    input = np.array([[sepal_length, sepal_width, petal_length, petal_width]])
    prediction = pipeline.predict(input)
    
    # Convert the prediction to the string label
    if prediction == 0:
        return 'iris-setosa'
    elif prediction == 1:
        return 'Iris-versicolor'
    elif prediction == 2:
        return 'Iris-virginica'
    else:
        return "Invalid prediction"

# Create a Gradio Interface:
# - fn: the function to call for inference
# - inputs: a list of component types to collect user input (in this case, four numeric values)
# - outputs: how the prediction is displayed (in this case, as text)
# - live: whether to update the output in real-time as the user types
interface = gr.Interface(
    fn=predict_iris,
    inputs=["number", "number", "number", "number"],
    outputs="text",
    live=True,
    title="Iris Species Identifier",
    description="Enter the four measurements to predict the Iris species."
)

# Run the interface when this script is executed directly.
# This will launch a local Gradio server and open a user interface in the browser.
if __name__ == "__main__":
    # To create a public link, set the parameter share=True
    interface.launch()
    
'''
# The Flag button allows users (or testers) to mark or “flag”
# a particular input-output interaction for later review.
# When someone clicks Flag, Gradio saves the input values (and often the output) to a log.csv file
# letting you keep track of interesting or potentially problematic cases for debugging or analysis later on
'''