模型调用.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from flask import Flask, request, jsonify
  2. import joblib
  3. import pandas as pd
  4. app = Flask(__name__)
  5. model = joblib.load("defrost_time_corrector.pkl")
  6. feature_columns = ["w", "rho_coal", "rho_ice", "C_coal", "C_ice", "L",
  7. "k_coal", "k_ice", "h", "T_air", "T_initial", "T_m",
  8. "a", "b", "c"]
  9. # 加载训练过的样本信息(用于判断是否相同物料)
  10. csv_path = '\\home\\jingang\\app\\server\\defrost\\feedback_data.csv'
  11. df_train = pd.read_csv(csv_path, parse_dates=["t_formula", "t_real"], encoding='utf-8')
  12. df_train["material_name"] = df_train["material_name"].astype(str)
  13. df_train["manufactured_goods"] = df_train["manufactured_goods"].astype(str)
  14. @app.route("/predict_defrost_time", methods=["POST"])
  15. def predict():
  16. data = request.get_json()
  17. material = str(data.get("material_name", "")).strip()
  18. goods = str(data.get("manufactured_goods", "")).strip()
  19. print("传递的物料名称为"+material)
  20. print("传递的制造品名称为"+goods)
  21. # 强制要求必须传物料+制造品名
  22. if not material or not goods:
  23. return jsonify({
  24. "error": "请提供 material_name 和 manufactured_goods 字段"
  25. }), 400
  26. # 判断是否是训练数据中见过的组合
  27. is_known = ((df_train["material_name"] == material) &
  28. (df_train["manufactured_goods"] == goods)).any()
  29. if not is_known:
  30. return jsonify({
  31. "predicted_hours": None,
  32. "is_known_sample": False,
  33. "error": "未知物料组合,无法预测"
  34. })
  35. # 进行预测
  36. df = pd.DataFrame([data])
  37. X = df[feature_columns]
  38. y_pred = model.predict(X)[0]
  39. return jsonify({
  40. "predicted_hours": round(y_pred, 2),
  41. "is_known_sample": True
  42. })
  43. if __name__ == '__main__':
  44. app.run(host='127.0.0.1', port=9994)