123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import pickle
- import pandas as pd
- # 加载模型
- def load_model(model_name):
- file_path = f'model_optimize/pkl/{model_name}.pkl'
- with open(file_path, 'rb') as f:
- return pickle.load(f)
- # 模型预测
- def predict(input_data: pd.DataFrame, model_name):
- # 初始化模型
- model = load_model(model_name) # 根据指定的模型名加载模型
- predictions = model.predict(input_data)
- return predictions.tolist()
- def train_and_save_model(dataset_id, model_type, model_name, model_description):
- dataset = get_dataset_by_id(dataset_id)
- if dataset.empty:
- raise ValueError(f"Dataset {dataset_id} is empty or not found.")
- # Step 1: 数据准备
- X = dataset.iloc[:, :-1] # 特征数据
- y = dataset.iloc[:, -1] # 目标变量
- # Step 2: 训练模型
- model = train_model_by_type(X, y, model_type)
- # Step 3: 保存模型到数据库
- # 使用提供的 model_name 和 model_description
- saved_model = save_model(model_name, model_type, model_description)
- # Step 4: 保存模型参数
- save_model_parameters(model, saved_model.ModelID)
- # Step 5: 计算评估指标(比如MSE)
- y_pred = model.predict(X)
- mse = mean_squared_error(y, y_pred)
- return saved_model, mse
- if __name__ == '__main__':
- # 反酸模型预测
- # 测试 predict 函数
- input_data = pd.DataFrame([{
- "organic_matter": 5.2,
- "chloride": 3.1,
- "cec": 25.6,
- "h_concentration": 0.5,
- "hn": 12.4,
- "al_concentration": 0.8,
- "free_alumina": 1.2,
- "free_iron": 0.9,
- "delta_ph": -0.2
- }])
- model_name = 'RF_filt'
- Acid_reflux_result = predict(input_data, model_name)
- print("Acid_reflux_result:", Acid_reflux_result) # 预测结果
- # 降酸模型预测
- # 测试 predict 函数
- input_data = pd.DataFrame([{
- "pH": 5.2,
- "OM": 3.1,
- "CL": 25.6,
- "H": 0.5,
- "Al": 12.4
- }])
- model_name = 'rf_model_1214_1008'
- Acid_reduce_result = predict(input_data, model_name)
- print("Acid_reduce_result:", Acid_reduce_result) # 预测结果
|