File size: 2,436 Bytes
ee3c55d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee1abf0
 
9799a89
 
 
 
 
 
 
 
 
 
 
 
ee3c55d
de6820c
 
50b9d16
 
de6820c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee3c55d
de6820c
 
 
 
 
 
 
ee3c55d
 
 
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
65
66
67
68
69
70
71
72
73
74
import gradio as gr
import joblib
import numpy as np

# Load the trained model
model = joblib.load("decision_tree_regressor_model.pkl")

# Define the prediction function
def predict_rpm(
    TM,	U_percent,	Thin,	Thick,	Neps,	IPI,	HI,	ARKM,	RKM_CV,	MRKM,	Elongation,	Elon_CV	
):
    features = np.array([
        TM,	U_percent,	Thin,	Thick,	Neps,	IPI,	HI,	ARKM,	RKM_CV,	MRKM,	Elongation,	Elon_CV
    ]).reshape(1, -1)
    prediction = model.predict(features)
    return round(prediction[0], 2)

# Define sliders for each feature
sliders = [
    
        gr.Slider(minimum=3.8, maximum=4.2, step=0.1, label="TM"),
        gr.Slider(minimum=9.42, maximum=10.16, step=0.01, label="U_percent"),
        gr.Slider(minimum=0.0, maximum=4, step=1, label="Thin"),
        gr.Slider(minimum=18.0, maximum=40, step=1, label="Thick"),
        gr.Slider(minimum=56, maximum=101.0, step=1, label="Neps"),
        gr.Slider(minimum=89, maximum=122.0, step=1, label="IPI"),
        gr.Slider(minimum=3.51, maximum=4.45, step=0.1, label="HI"),
        gr.Slider(minimum=18.7, maximum=20.24, step=0.1, label="ARKM"),
        gr.Slider(minimum=6.89, maximum=8.6, step=0.1, label="RKM_CV"),
        gr.Slider(minimum=13.55, maximum=15.95, step=0.1, label="MRKM"),
        gr.Slider(minimum=3.75, maximum=5.52, step=0.1, label="Elongation"),
        gr.Slider(minimum=8.04, maximum=10.54, step=0.1, label="Elon_CV"),
]

with gr.Blocks() as demo:
    gr.Markdown("## Loom RPM Prediction App")
    gr.Markdown("Adjust sliders for 12 features to predict Loom RPM using a Decision Tree Regressor.")

    with gr.Row():
        sliders_row1 = sliders[0:4]
        for slider in sliders_row1:
            slider.render()

    with gr.Row():
        sliders_row2 = sliders[4:8]
        for slider in sliders_row2:
            slider.render()

    with gr.Row():
        sliders_row3 = sliders[8:12]
        for slider in sliders_row3:
            slider.render()

    output = gr.Number(label="Predicted RPM")
    predict_btn = gr.Button("Predict RPM")

    predict_btn.click(
        fn=predict_rpm,
        inputs=sliders,
        outputs=output
    )

# Create the interface
# demo = gr.Interface(
#     fn=predict_rpm,
#     inputs=sliders,
#     outputs=gr.Number(label="Predicted RPM"),
#     title="RPM Prediction App",
#     description="Adjust the sliders for each of the 12 features to predict the RPM."
# )

if __name__ == "__main__":
    demo.launch()