|
|
import os
|
|
|
import time
|
|
|
import datetime
|
|
|
import pandas as pd
|
|
|
from typing import List
|
|
|
from common import inference_model
|
|
|
import logging
|
|
|
import numpy as np
|
|
|
import yaml
|
|
|
from feature_process import create_feature_df, apply_feature_weights, Features, process_features_list
|
|
|
|
|
|
# 模拟发送的特征数据
|
|
|
features_data1 = {
|
|
|
"somatization": 0.5,
|
|
|
"obsessive_compulsive": 0.3,
|
|
|
"interpersonal_sensitivity": 0.7,
|
|
|
"depression": 0.6,
|
|
|
"anxiety": 0.8,
|
|
|
"hostility": 0.4,
|
|
|
"terror": 0.2,
|
|
|
"paranoia": 0.1,
|
|
|
"psychoticism": 0.9,
|
|
|
"other": 0.2,
|
|
|
"father_parenting_style": 2,
|
|
|
"mother_parenting_style": 3,
|
|
|
"self_assessed_family_economic_condition": 4,
|
|
|
"history_of_psychological_counseling": 1,
|
|
|
"absenteeism_above_average": True,
|
|
|
"academic_warning": False,
|
|
|
"label": -1
|
|
|
}
|
|
|
features_data2 = {
|
|
|
"somatization": 4.3,
|
|
|
"obsessive_compulsive": 4.1,
|
|
|
"interpersonal_sensitivity": 3.8,
|
|
|
"depression": 4,
|
|
|
"anxiety": 4.2,
|
|
|
"hostility": 4.2,
|
|
|
"terror": 4,
|
|
|
"paranoia": 4.2,
|
|
|
"psychoticism": 3.8,
|
|
|
"other": 3.6,
|
|
|
"father_parenting_style": 1,
|
|
|
"mother_parenting_style": 0,
|
|
|
"self_assessed_family_economic_condition": 0,
|
|
|
"history_of_psychological_counseling": False,
|
|
|
"absenteeism_above_average": True,
|
|
|
"academic_warning": True,
|
|
|
"label": -1
|
|
|
}
|
|
|
features_data3 = {
|
|
|
"somatization": 1.1,
|
|
|
"obsessive_compulsive": 2.3,
|
|
|
"interpersonal_sensitivity": 2.6,
|
|
|
"depression": 2.2,
|
|
|
"anxiety": 1.6,
|
|
|
"hostility": 1.5,
|
|
|
"terror": 1.6,
|
|
|
"paranoia": 1.5,
|
|
|
"psychoticism": 1.2,
|
|
|
"other": 1.3,
|
|
|
"father_parenting_style": 1,
|
|
|
"mother_parenting_style": 1,
|
|
|
"self_assessed_family_economic_condition": 1,
|
|
|
"history_of_psychological_counseling": False,
|
|
|
"absenteeism_above_average": False,
|
|
|
"academic_warning": False,
|
|
|
"label": -1
|
|
|
}
|
|
|
features_data4 = {
|
|
|
"somatization": 1.5,
|
|
|
"obsessive_compulsive": 2.4,
|
|
|
"interpersonal_sensitivity": 2.2,
|
|
|
"depression": 3.2,
|
|
|
"anxiety": 1.6,
|
|
|
"hostility": 1.5,
|
|
|
"terror": 3.1,
|
|
|
"paranoia": 1.5,
|
|
|
"psychoticism": 1.9,
|
|
|
"other": 2.6,
|
|
|
"father_parenting_style": 1,
|
|
|
"mother_parenting_style": 1,
|
|
|
"self_assessed_family_economic_condition": 0,
|
|
|
"history_of_psychological_counseling": False,
|
|
|
"absenteeism_above_average": False,
|
|
|
"academic_warning": False,
|
|
|
"label": -1
|
|
|
}
|
|
|
|
|
|
# 必须是features_list
|
|
|
# features_data_list = [features_data3]
|
|
|
features_data_list = [features_data4, features_data2, features_data3, features_data1]
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
processed_features_list: List[Features] = process_features_list(features_data_list)
|
|
|
|
|
|
# 特征预处理
|
|
|
all_features = create_feature_df(processed_features_list)
|
|
|
|
|
|
# 读取 YAML 配置文件
|
|
|
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_local.yaml"))
|
|
|
with open(config_path, 'r') as f:
|
|
|
config = yaml.load(f, Loader=yaml.FullLoader)
|
|
|
feature_names = config['feature_names']
|
|
|
feature_weights = config['feature_weights']
|
|
|
|
|
|
# 应用特征权重
|
|
|
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
|
|
|
|
|
|
start_time = time.time() # 记录开始时间
|
|
|
|
|
|
# 创建静态文件存放文件夹
|
|
|
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_local")) # 设置模型文件和配置文件的存放目录,和本py同级
|
|
|
os.makedirs(static_dir, exist_ok=True)
|
|
|
|
|
|
# 训练前设置
|
|
|
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
|
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
|
|
|
config['data_path'] = data_path
|
|
|
feature_label_weighted.to_excel(data_path, index=False)
|
|
|
|
|
|
# 配置日志
|
|
|
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_{now}.log"))
|
|
|
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
|
|
|
|
|
|
# 开始验证
|
|
|
list_avg_f1 = []
|
|
|
list_wrong_percentage = []
|
|
|
list_precision = []
|
|
|
list_recall = []
|
|
|
list_f1 = []
|
|
|
|
|
|
# 特征和标签
|
|
|
X = feature_label_weighted[config['feature_names']].values
|
|
|
y = feature_label_weighted[config['label_name']].values
|
|
|
|
|
|
print(config)
|
|
|
predictions = inference_model(config["model_path"], X, y, config)
|
|
|
end_time = time.time() # 记录结束时间
|
|
|
print("预测耗时:", end_time - start_time, "秒") # 打印执行时间
|
|
|
|
|
|
print("预测结果:", predictions) |