ramy21 commited on
Commit
d25b6dc
·
1 Parent(s): 61ef7cc

Deploy predictive maintenance model

Browse files
Files changed (4) hide show
  1. Dockerfile +13 -0
  2. app.py +38 -0
  3. model.pkl +3 -0
  4. requirements.txt +4 -0
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ WORKDIR /app
4
+
5
+ COPY requirements.txt .
6
+ RUN pip install --no-cache-dir -r requirements.txt
7
+
8
+ COPY app.py .
9
+ COPY model.pkl .
10
+
11
+ EXPOSE 7860
12
+
13
+ CMD ["python", "app.py"]
app.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
2
+ import joblib
3
+ import pandas as pd
4
+
5
+ app = Flask(__name__)
6
+ model = joblib.load("model.pkl")
7
+
8
+ @app.route("/predict", methods=["POST"])
9
+ def predict():
10
+ """
11
+ Predict machine failure
12
+ Expected JSON format:
13
+ {
14
+ "Type": 1,
15
+ "Air temperature [K]": 300.0,
16
+ "Process temperature [K]": 310.0,
17
+ "Rotational speed [rpm]": 1500,
18
+ "Torque [Nm]": 40.0,
19
+ "Tool wear [min]": 100
20
+ }
21
+ """
22
+ data = request.json
23
+ df = pd.DataFrame([data])
24
+ prediction = int(model.predict(df)[0])
25
+ probability = float(model.predict_proba(df)[0][1])
26
+
27
+ return jsonify({
28
+ "prediction": prediction,
29
+ "failure_probability": probability,
30
+ "status": "failure" if prediction == 1 else "normal"
31
+ })
32
+
33
+ @app.route("/health", methods=["GET"])
34
+ def health():
35
+ return jsonify({"status": "healthy"})
36
+
37
+ if __name__ == "__main__":
38
+ app.run(host="0.0.0.0", port=7860)
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aa8129cd105089df9f9a42c9808f6818c1fa0339a28d6f01e2cafa327d8fce15
3
+ size 2050841
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ flask==3.0.0
2
+ scikit-learn==1.3.2
3
+ pandas==2.1.4
4
+ joblib==1.3.2