fix stat logic

This commit is contained in:
kaiza_hikaru 2025-11-07 08:35:48 +08:00
parent 5d09516151
commit d7ec441ac2

View File

@ -30,38 +30,21 @@ def calculate_advanced_statistics(df_result):
result_stats[f'STD_{col}'] = df_result[col].std() result_stats[f'STD_{col}'] = df_result[col].std()
# 3. 统计error_ratio_x列中小于等于1/3、1/2、1的比例 # 3. 统计error_ratio_x列中小于等于1/3、1/2、1的比例
# 将所有error_ratio列合并计算比例
ratio_data = []
for col in error_ratio_cols: for col in error_ratio_cols:
if col in df_result.columns: if col in df_result.columns:
ratio_data.extend(df_result[col].dropna().values) result_stats[f'DoFAcc_1_3_{col}'] = (df_result[col] <= 1/3).mean()
result_stats[f'DoFAcc_1_2_{col}'] = (df_result[col] <= 1/2).mean()
if ratio_data: result_stats[f'DoFAcc_1_{col}'] = (df_result[col] <= 1).mean()
ratio_series = pd.Series(ratio_data)
result_stats['DoFAcc_1_3'] = (ratio_series <= 1/3).mean()
result_stats['DoFAcc_1_2'] = (ratio_series <= 1/2).mean()
result_stats['DoFAcc_1'] = (ratio_series <= 1).mean()
else:
result_stats['DoFAcc_1_3'] = np.nan
result_stats['DoFAcc_1_2'] = np.nan
result_stats['DoFAcc_1'] = np.nan
# 4. 统计direction_x列中1的比例DSS - Direction Sign Score # 4. 统计direction_x列中1的比例DSS - Direction Sign Score
direction_data = []
for col in direction_cols: for col in direction_cols:
if col in df_result.columns: if col in df_result.columns:
direction_data.extend(df_result[col].dropna().values) result_stats[f'DSS_{col}'] = df_result[col].mean()
if direction_data:
direction_series = pd.Series(direction_data)
result_stats['DSS'] = direction_series.mean() # 1的比例就是均值
else:
result_stats['DSS'] = np.nan
return pd.Series(result_stats) return pd.Series(result_stats)
def process_autofocus_results(input_file, dataset_type, group_size=30): def process_autofocus_results(input_file, group_size=30):
# ========== 图片级统计数据 ========== # ========== 图片级统计数据 ==========
# 读取原始数据 # 读取原始数据
df_original = pd.read_excel(input_file) df_original = pd.read_excel(input_file)
@ -243,7 +226,7 @@ def main():
result_path = f"results/{model_type}_{dataset_type}.xlsx" result_path = f"results/{model_type}_{dataset_type}.xlsx"
_ = process_autofocus_results(result_path, dataset_type) _ = process_autofocus_results(result_path)
if __name__ == "__main__": if __name__ == "__main__":