supanthadey1's picture
Add BERTose and AFFINose training code release
1d6f391 verified
Raw
History Blame Contribute Delete
1.94 kB
import pandas as pd
import numpy as np
TASKS = ['domain', 'kingdom', 'phylum', 'class', 'order', 'family', 'genus', 'species', 'immunogenicity', 'link']
for dataset in ['strict', 'strict_3']:
print(f"\n{'='*80}")
print(f"DATASET: {dataset.upper()}")
print(f"{'='*80}")
df = pd.read_csv(f'benchmark_comparison_{dataset}.csv', index_col=0)
# Calculate ranks per task (higher accuracy = rank 1)
ranks = df.rank(ascending=False, method='min')
# Calculate mean rank
mean_ranks = ranks.mean(axis=1).sort_values()
# Display sorted by accuracy per task
print("\n๐Ÿ“Š ACCURACY BY TASK (sorted by mean rank):")
print("-"*100)
# Sort by mean rank
df['Mean_Rank'] = mean_ranks
df_sorted = df.sort_values('Mean_Rank')
# Format nicely
for col in df_sorted.columns:
if col != 'Mean_Rank':
df_sorted[col] = df_sorted[col].apply(lambda x: f"{x*100:.1f}%" if pd.notnull(x) else "-")
else:
df_sorted[col] = df_sorted[col].apply(lambda x: f"{x:.2f}")
print(df_sorted.to_string())
print("\n\n๐Ÿ† RANKINGS BY TASK:")
print("-"*100)
for task in TASKS:
if task in df.columns:
task_ranks = df[task].sort_values(ascending=False)
print(f"\n{task.upper():15} | ", end="")
for i, (model, acc) in enumerate(task_ranks.items(), 1):
if isinstance(acc, str):
acc_val = float(acc.replace('%', ''))/100
else:
acc_val = acc
print(f"#{i}: {model}({acc_val*100:.1f}%) ", end="")
print("\n\n\n๐Ÿ“ˆ MEAN RANK SUMMARY:")
print("-"*50)
for model, rank in mean_ranks.items():
print(f" {model:20} : {rank:.2f}")
# Determine winner
winner = mean_ranks.idxmin()
print(f"\n๐Ÿฅ‡ BEST MODEL (lowest mean rank): {winner} ({mean_ranks[winner]:.2f})")