Sathwikchowdary commited on
Commit
659dfad
Β·
verified Β·
1 Parent(s): 47dd1d2

Update pages/2player_comparison.py

Browse files
Files changed (1) hide show
  1. pages/2player_comparison.py +71 -0
pages/2player_comparison.py CHANGED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import pickle
4
+ import matplotlib.pyplot as plt
5
+ import seaborn as sns
6
+
7
+ # Load model and encoder
8
+ @st.cache_resource
9
+ def load_model_and_encoder():
10
+ with open('best_rf_pipeline.pkl', 'rb') as f:
11
+ model = pickle.load(f)
12
+ with open('label_encoder.pkl', 'rb') as f:
13
+ encoder = pickle.load(f)
14
+ return model, encoder
15
+
16
+ # Load player dataset
17
+ @st.cache_data
18
+ def load_data():
19
+ df = pd.read_csv('Reduced_final_teams.csv')
20
+ return df
21
+
22
+ # Main App
23
+ def main():
24
+ st.title("Cricket Player Comparison Tool 🏏")
25
+ st.write("Upload two player images and compare their performance visually.")
26
+
27
+ df = load_data()
28
+ model, encoder = load_model_and_encoder()
29
+
30
+ # Upload Images
31
+ col1, col2 = st.columns(2)
32
+ with col1:
33
+ img1 = st.file_uploader("Upload Image for Player 1", type=['png', 'jpg', 'jpeg'], key='img1')
34
+ with col2:
35
+ img2 = st.file_uploader("Upload Image for Player 2", type=['png', 'jpg', 'jpeg'], key='img2')
36
+
37
+ if img1 and img2:
38
+ # Placeholder: Extract player name from uploaded file name
39
+ player1_name = img1.name.split('.')[0]
40
+ player2_name = img2.name.split('.')[0]
41
+
42
+ if player1_name in df['Player'].values and player2_name in df['Player'].values:
43
+ player1_data = df[df['Player'] == player1_name].squeeze()
44
+ player2_data = df[df['Player'] == player2_name].squeeze()
45
+
46
+ st.success(f"Comparing **{player1_name}** vs **{player2_name}**")
47
+
48
+ # Combine both players into one DataFrame for visualization
49
+ comparison_df = pd.DataFrame([player1_data, player2_data])
50
+ comparison_df.set_index('Player', inplace=True)
51
+
52
+ # Display Side-by-Side Metrics
53
+ st.subheader("πŸ” Key Metrics")
54
+ st.dataframe(comparison_df.T)
55
+
56
+ # Radar chart / Barplot for comparison
57
+ st.subheader("πŸ“Š Visual Comparison")
58
+ num_cols = comparison_df.select_dtypes(include='number').columns.tolist()
59
+
60
+ # Plot
61
+ plt.figure(figsize=(10, 5))
62
+ comparison_df[num_cols].T.plot(kind='bar', figsize=(10, 6))
63
+ plt.title(f"Stat Comparison: {player1_name} vs {player2_name}")
64
+ plt.ylabel("Metric Value")
65
+ plt.xticks(rotation=45)
66
+ st.pyplot(plt.gcf())
67
+ else:
68
+ st.error("Player names extracted from images do not match any in the dataset. Ensure filenames match player names in the CSV.")
69
+
70
+ if __name__ == "__main__":
71
+ main()