1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from flask import Flask, request, jsonify
- import joblib
- import pandas as pd
- app = Flask(__name__)
- model = joblib.load("defrost_time_corrector.pkl")
- feature_columns = ["w", "rho_coal", "rho_ice", "C_coal", "C_ice", "L",
- "k_coal", "k_ice", "h", "T_air", "T_initial", "T_m",
- "a", "b", "c"]
- # 加载训练过的样本信息(用于判断是否相同物料)
- csv_path = 'C:\\Users\\Administrator\\Desktop\\defrost\\feedback_data.csv'
- df_train = pd.read_csv(csv_path, parse_dates=["t_formula", "t_real"], encoding='utf-8')
- df_train["material_name"] = df_train["material_name"].astype(str)
- df_train["manufactured_goods"] = df_train["manufactured_goods"].astype(str)
- @app.route("/predict_defrost_time", methods=["POST"])
- def predict():
- data = request.get_json()
- material = str(data.get("material_name", "")).strip()
- goods = str(data.get("manufactured_goods", "")).strip()
- print("传递的物料名称为"+material)
- print("传递的制造品名称为"+goods)
- # 强制要求必须传物料+制造品名
- if not material or not goods:
- return jsonify({
- "error": "请提供 material_name 和 manufactured_goods 字段"
- }), 400
- # 判断是否是训练数据中见过的组合
- is_known = ((df_train["material_name"] == material) &
- (df_train["manufactured_goods"] == goods)).any()
- if not is_known:
- return jsonify({
- "predicted_hours": None,
- "is_known_sample": False,
- "error": "未知物料组合,无法预测"
- })
- # 进行预测
- df = pd.DataFrame([data])
- X = df[feature_columns]
- y_pred = model.predict(X)[0]
- return jsonify({
- "predicted_hours": round(y_pred, 2),
- "is_known_sample": True
- })
- if __name__ == '__main__':
- app.run(host='127.0.0.1', port=9994)
|