pankilshah commited on
Commit
9d2a531
·
verified ·
1 Parent(s): 2db6898

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -46
app.py CHANGED
@@ -1,50 +1,78 @@
 
 
 
 
 
1
  import gradio as gr
2
  import pandas as pd
3
- import joblib
4
-
5
- # Load your model
6
- model = joblib.load("model.joblib")
7
-
8
- # Define the function to process inputs
9
- def predict_charges(age, sex, bmi, children, smoker, region):
10
- # Create a DataFrame with the inputs
11
- input_data = pd.DataFrame({
12
- "age": [age],
13
- "sex": [sex],
14
- "bmi": [bmi],
15
- "children": [children],
16
- "smoker": [smoker],
17
- "region": [region]
18
- })
19
-
20
- charges = model.predict(input_data)[0]
21
-
22
- # For demonstration, assume charges as a mock value
23
- charges = 1000 + (age * 10) + (bmi * 5) + (children * 50) + (500 if smoker == "yes" else 0)
24
-
25
- return f"Estimated charges: ${charges:.2f}"
26
-
27
- # Gradio interface setup
28
- inputs = [
29
- gr.inputs.Number(label="Age", default=30),
30
- gr.inputs.Radio(["male", "female"], label="Sex"),
31
- gr.inputs.Number(label="BMI", default=25),
32
- gr.inputs.Number(label="Children", default=0),
33
- gr.inputs.Radio(["yes", "no"], label="Smoker"),
34
- gr.inputs.Dropdown(["northeast", "northwest", "southeast", "southwest"], label="Region")
35
- ]
36
-
37
- outputs = gr.outputs.Textbox(label="Estimated Charges")
38
-
39
- # Initialize the Gradio interface
40
- app = gr.Interface(
41
- fn=predict_charges,
42
- inputs=inputs,
43
- outputs=outputs,
44
- title="Insurance Charges Prediction",
45
- description="Enter the details to estimate health insurance charges based on input parameters."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  )
47
 
48
- # Launch the app
49
- if __name__ == "__main__":
50
- app.launch()
 
1
+ import os
2
+ import uuid
3
+ import joblib
4
+ import json
5
+
6
  import gradio as gr
7
  import pandas as pd
8
+
9
+ from huggingface_hub import CommitScheduler
10
+ from pathlib import Path
11
+
12
+ log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
13
+ log_folder = log_file.parent
14
+
15
+ scheduler = CommitScheduler(
16
+ repo_id="machine-failure-logs",
17
+ repo_type="dataset",
18
+ folder_path=log_folder,
19
+ path_in_repo="data",
20
+ every=2
21
+ )
22
+
23
+ machine_failure_predictor = joblib.load('model.joblib')
24
+
25
+ air_temperature_input = gr.Number(label='Air temperature [K]')
26
+ process_temperature_input = gr.Number(label='Process temperature [K]')
27
+ rotational_speed_input = gr.Number(label='Rotational speed [rpm]')
28
+ torque_input = gr.Number(label='Torque [Nm]')
29
+ tool_wear_input = gr.Number(label='Tool wear [min]')
30
+ type_input = gr.Dropdown(
31
+ ['L', 'M', 'H'],
32
+ label='Type'
33
+ )
34
+
35
+ model_output = gr.Label(label="Machine failure")
36
+
37
+ def predict_machine_failure(air_temperature, process_temperature, rotational_speed, torque, tool_wear, type):
38
+ sample = {
39
+ 'Air temperature [K]': air_temperature,
40
+ 'Process temperature [K]': process_temperature,
41
+ 'Rotational speed [rpm]': rotational_speed,
42
+ 'Torque [Nm]': torque,
43
+ 'Tool wear [min]': tool_wear,
44
+ 'Type': type
45
+ }
46
+ data_point = pd.DataFrame([sample])
47
+ prediction = machine_failure_predictor.predict(data_point).tolist()
48
+
49
+ with scheduler.lock:
50
+ with log_file.open("a") as f:
51
+ f.write(json.dumps(
52
+ {
53
+ 'Air temperature [K]': air_temperature,
54
+ 'Process temperature [K]': process_temperature,
55
+ 'Rotational speed [rpm]': rotational_speed,
56
+ 'Torque [Nm]': torque,
57
+ 'Tool wear [min]': tool_wear,
58
+ 'Type': type,
59
+ 'prediction': prediction[0]
60
+ }
61
+ ))
62
+ f.write("\n")
63
+
64
+ return prediction[0]
65
+
66
+ demo = gr.Interface(
67
+ fn=predict_machine_failure,
68
+ inputs=[air_temperature_input, process_temperature_input, rotational_speed_input,
69
+ torque_input, tool_wear_input, type_input],
70
+ outputs=model_output,
71
+ title="Machine Failure Predictor",
72
+ description="This API allows you to predict the machine failure status of an equipment",
73
+ allow_flagging="auto",
74
+ concurrency_limit=8
75
  )
76
 
77
+ demo.queue()
78
+ demo.launch(share=False)