SSS18 commited on
Commit
9ecea8c
·
verified ·
1 Parent(s): 1a54c3d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -40
app.py CHANGED
@@ -1,42 +1,44 @@
1
- import gradio as gr
2
- import pandas as pd
3
- import joblib
 
 
 
4
 
5
  # Load model
6
- model = joblib.load("predictive_model_smote.pkl")
7
-
8
- def predict_failure(type_value, air_temp, process_temp, rotational_speed, torque, tool_wear):
9
-
10
- # Create dataframe (same order as training)
11
- input_data = pd.DataFrame([{
12
- "Type": type_value,
13
- "Air temperature [K]": air_temp,
14
- "Process temperature [K]": process_temp,
15
- "Rotational speed [rpm]": rotational_speed,
16
- "Torque [Nm]": torque,
17
- "Tool wear [min]": tool_wear
18
- }])
19
-
20
- prediction = model.predict(input_data)[0]
21
-
22
- if prediction == 1:
23
- return "⚠️ Machine Failure Likely"
24
- else:
25
- return " Machine Working Normally"
26
-
27
- interface = gr.Interface(
28
- fn=predict_failure,
29
- inputs=[
30
- gr.Dropdown(["L", "M", "H"], label="Type"),
31
- gr.Number(label="Air Temperature (K)"),
32
- gr.Number(label="Process Temperature (K)"),
33
- gr.Number(label="Rotational Speed (rpm)"),
34
- gr.Number(label="Torque (Nm)"),
35
- gr.Number(label="Tool Wear (min)")
36
- ],
37
- outputs="text",
38
- title="Predictive Maintenance Model",
39
- description="Enter machine parameters to predict failure."
40
- )
41
-
42
- interface.launch()
 
1
+ import os
2
+ import pickle
3
+ import numpy as np
4
+ from flask import Flask, request, jsonify
5
+
6
+ app = Flask(__name__)
7
 
8
  # Load model
9
+ MODEL_PATH = "predictive_model_smote.pkl"
10
+
11
+ with open(MODEL_PATH, "rb") as f:
12
+ model = pickle.load(f)
13
+
14
+ @app.route("/")
15
+ def home():
16
+ return {"message": "Predictive Maintenance API is running"}
17
+
18
+ @app.route("/predict", methods=["POST"])
19
+ def predict():
20
+ try:
21
+ data = request.json
22
+
23
+ # Expected input features in correct order
24
+ features = [
25
+ data["Air temperature [K]"],
26
+ data["Process temperature [K]"],
27
+ data["Rotational speed [rpm]"],
28
+ data["Torque [Nm]"],
29
+ data["Tool wear [min]"]
30
+ ]
31
+
32
+ features_array = np.array([features])
33
+ prediction = model.predict(features_array)[0]
34
+
35
+ return jsonify({
36
+ "prediction": int(prediction)
37
+ })
38
+
39
+ except Exception as e:
40
+ return jsonify({"error": str(e)})
41
+
42
+ if __name__ == "__main__":
43
+ port = int(os.environ.get("PORT", 7860))
44
+ app.run(host="0.0.0.0", port=port)