ViralTweets / metric_analysis /2023-precision-recall-update.py
max-bevza's picture
Upload folder using huggingface_hub
cbce622 verified
import pandas as pd
from scipy.stats import hmean
df = pd.read_csv('merged_outputs.csv')
df['recall'] = df['tpr']
df['tp'] = df['tpr']*1008
df['fp'] = df['new_tweets'] - df['tp']
df['precision'] = df['tp'] / (df['tp'] + df['fp'])
df['f1'] = hmean(df[['precision', 'recall']], axis=1)
df['f2'] = 5 * (df['precision'] * df['recall']) / ((4 * df['precision'] ) + df['recall'])
df['f3'] = 10 * (df['precision'] * df['recall']) / ((9 * df['precision'] ) + df['recall'])
df['f4'] = 17 * (df['precision'] * df['recall']) / ((16 * df['precision'] ) + df['recall'])
df['f5'] = 26 * (df['precision'] * df['recall']) / ((25 * df['precision'] ) + df['recall'])
# df['f1'] = harmonic_mean([df['precision'], df['recall']])
metric_names = {
'hard_threshold_viral_covered_vs_new_tweets_labeled' : 'RT > T',
'virality_avg_retweets_viral_covered_vs_new_tweets_labeled' : 'RT > Avg. RT',
'log_retweets_over_log_followers_viral_covered_vs_new_tweets_labeled' : 'log(RT / Followers)',
'virality_median_retweets_viral_covered_vs_new_tweets_labeled 2': 'RT > Med. RT',
'retweets_over_log_followers_viral_covered_vs_new_tweets_labeled': 'RT / log(Followers)',
'roberta_paper_metric_viral_covered_vs_new_tweets_labeled': 'Influence Score',
'virality_followers_viral_covered_vs_new_tweets_labeled': 'RT / Followers',
'log_retweets_over_followers_viral_covered_vs_new_tweets_labeled': 'log(RT) / Followers',
'virality_median_retweets_viral_covered_vs_new_tweets_labeled': 'unused',
'virality_retweet_percentile_per_user_viral_covered_vs_new_tweets_labeled': 'RT Percentile'
}
df['metric_name'] = '?'
for key, name in metric_names.items():
df.loc[df.metric == key, 'metric_name'] = name
df.to_csv('all_metric_stats.csv', index = False)
print()