From e5b3dc106b0a6edef9ba3c399be67fdcdb4dfdd4 Mon Sep 17 00:00:00 2001 From: wh1370414700-commits Date: Wed, 10 Jun 2026 15:13:55 -0500 Subject: [PATCH] Add trending agents score --- data-science/analytics/trending_agents.py | 47 +++++++++++++---------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/data-science/analytics/trending_agents.py b/data-science/analytics/trending_agents.py index 860737d..e7de7f8 100644 --- a/data-science/analytics/trending_agents.py +++ b/data-science/analytics/trending_agents.py @@ -1,13 +1,17 @@ -"""Trending agents algorithm — placeholder. +"""Trending agents score calculation. -TODO: Implement trending score based on: - - Recent run count (weighted) - - Download velocity - - Rating trend (recent vs historical) - - Review volume +This script reads mock usage and rating data, then calculates a simple +trending score for each agent. -Input: datasets/agent_usage.csv, datasets/agent_ratings.csv -Output: Ranked list of agent IDs with trending scores +Formula: +trending_score = recent_runs * 0.6 + total_runs * 0.2 + avg_rating * 20 + +Why: +- recent_runs has the highest weight because trending agents should be active now. +- total_runs rewards agents with proven usage. +- avg_rating rewards agents with better user ratings. + +The script prints the top 5 trending agents. """ import pandas as pd @@ -17,33 +21,36 @@ def load_usage_data() -> pd.DataFrame: - """Load mock usage data.""" return pd.read_csv(DATASETS_DIR / "agent_usage.csv") def load_ratings_data() -> pd.DataFrame: - """Load mock ratings data.""" return pd.read_csv(DATASETS_DIR / "agent_ratings.csv") def compute_trending_scores() -> pd.DataFrame: - """Compute trending scores for all agents. - - TODO: Implement weighted scoring formula - TODO: Normalize scores to 0-100 range - """ usage = load_usage_data() ratings = load_ratings_data() - # Placeholder: simple sort by recent_runs merged = usage.merge(ratings, on="agent_id", how="left") - merged["trending_score"] = merged["recent_runs"] * merged["avg_rating"] - merged = merged.sort_values("trending_score", ascending=False) - return merged[["agent_id", "agent_name", "trending_score"]] + if "agent_name" not in merged.columns: + merged["agent_name"] = merged["agent_id"] + + merged["trending_score"] = ( + merged["recent_runs"] * 0.6 + + merged["total_runs"] * 0.2 + + merged["avg_rating"] * 20 + ).round(1) + + return ( + merged[["agent_id", "agent_name", "trending_score"]] + .sort_values("trending_score", ascending=False) + .head(5) + ) if __name__ == "__main__": results = compute_trending_scores() - print("Trending Agents (placeholder algorithm):") + print("Top 5 Trending Agents:") print(results.to_string(index=False))