Roni Goldshmidt
commited on
Commit
·
a197e82
1
Parent(s):
a5b8c6f
Initial leaderboard setup
Browse files- .ipynb_checkpoints/app-checkpoint.py +44 -28
- app.py +44 -28
.ipynb_checkpoints/app-checkpoint.py
CHANGED
@@ -198,31 +198,39 @@ with tab2:
|
|
198 |
)
|
199 |
st.plotly_chart(fig, use_container_width=True)
|
200 |
|
201 |
-
# Create a
|
202 |
-
|
203 |
-
for model in selected_models:
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
)
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
# Individual Precision-Recall plots for each class
|
227 |
unique_classes = class_data['Class'].unique()
|
228 |
num_classes = len(unique_classes)
|
@@ -237,7 +245,15 @@ with tab2:
|
|
237 |
class_idx = row * 3 + col_idx
|
238 |
if class_idx < num_classes:
|
239 |
current_class = unique_classes[class_idx]
|
240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
|
242 |
fig = px.scatter(
|
243 |
class_specific_data,
|
@@ -245,7 +261,7 @@ with tab2:
|
|
245 |
y='Recall',
|
246 |
color='Model',
|
247 |
title=f'Precision vs Recall: {current_class}',
|
248 |
-
height=300
|
249 |
)
|
250 |
|
251 |
# Update layout for better visibility
|
@@ -253,7 +269,7 @@ with tab2:
|
|
253 |
xaxis_range=[0, 1],
|
254 |
yaxis_range=[0, 1],
|
255 |
margin=dict(l=40, r=40, t=40, b=40),
|
256 |
-
showlegend=False
|
257 |
)
|
258 |
|
259 |
# Add diagonal reference line
|
|
|
198 |
)
|
199 |
st.plotly_chart(fig, use_container_width=True)
|
200 |
|
201 |
+
# Create a shared legend container
|
202 |
+
legend_data = []
|
203 |
+
for i, model in enumerate(selected_models):
|
204 |
+
legend_data.append({
|
205 |
+
'Model': model,
|
206 |
+
'Visible': True,
|
207 |
+
'Index': i
|
208 |
+
})
|
209 |
+
legend_df = pd.DataFrame(legend_data)
|
210 |
+
|
211 |
+
# Create toggles for models using st.columns
|
212 |
+
st.markdown("### Select Models to Display:")
|
213 |
+
|
214 |
+
# Calculate how many columns we need (aim for about 4-5 models per row)
|
215 |
+
models_per_row = 4
|
216 |
+
num_rows = (len(selected_models) + models_per_row - 1) // models_per_row
|
217 |
+
|
218 |
+
for row in range(num_rows):
|
219 |
+
cols = st.columns(models_per_row)
|
220 |
+
for col_idx in range(models_per_row):
|
221 |
+
model_idx = row * models_per_row + col_idx
|
222 |
+
if model_idx < len(selected_models):
|
223 |
+
model = selected_models[model_idx]
|
224 |
+
# Store toggle state in session state with unique key
|
225 |
+
toggle_key = f"toggle_{model}"
|
226 |
+
if toggle_key not in st.session_state:
|
227 |
+
st.session_state[toggle_key] = True
|
228 |
+
st.session_state[toggle_key] = cols[col_idx].checkbox(
|
229 |
+
model,
|
230 |
+
value=st.session_state[toggle_key],
|
231 |
+
key=f"model_toggle_{model}"
|
232 |
+
)
|
233 |
+
|
234 |
# Individual Precision-Recall plots for each class
|
235 |
unique_classes = class_data['Class'].unique()
|
236 |
num_classes = len(unique_classes)
|
|
|
245 |
class_idx = row * 3 + col_idx
|
246 |
if class_idx < num_classes:
|
247 |
current_class = unique_classes[class_idx]
|
248 |
+
|
249 |
+
# Filter data based on visible models
|
250 |
+
visible_models = [model for model in selected_models
|
251 |
+
if st.session_state[f"toggle_{model}"]]
|
252 |
+
|
253 |
+
class_specific_data = class_data[
|
254 |
+
(class_data['Class'] == current_class) &
|
255 |
+
(class_data['Model'].isin(visible_models))
|
256 |
+
]
|
257 |
|
258 |
fig = px.scatter(
|
259 |
class_specific_data,
|
|
|
261 |
y='Recall',
|
262 |
color='Model',
|
263 |
title=f'Precision vs Recall: {current_class}',
|
264 |
+
height=300
|
265 |
)
|
266 |
|
267 |
# Update layout for better visibility
|
|
|
269 |
xaxis_range=[0, 1],
|
270 |
yaxis_range=[0, 1],
|
271 |
margin=dict(l=40, r=40, t=40, b=40),
|
272 |
+
showlegend=False # Hide individual legends
|
273 |
)
|
274 |
|
275 |
# Add diagonal reference line
|
app.py
CHANGED
@@ -198,31 +198,39 @@ with tab2:
|
|
198 |
)
|
199 |
st.plotly_chart(fig, use_container_width=True)
|
200 |
|
201 |
-
# Create a
|
202 |
-
|
203 |
-
for model in selected_models:
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
)
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
# Individual Precision-Recall plots for each class
|
227 |
unique_classes = class_data['Class'].unique()
|
228 |
num_classes = len(unique_classes)
|
@@ -237,7 +245,15 @@ with tab2:
|
|
237 |
class_idx = row * 3 + col_idx
|
238 |
if class_idx < num_classes:
|
239 |
current_class = unique_classes[class_idx]
|
240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
|
242 |
fig = px.scatter(
|
243 |
class_specific_data,
|
@@ -245,7 +261,7 @@ with tab2:
|
|
245 |
y='Recall',
|
246 |
color='Model',
|
247 |
title=f'Precision vs Recall: {current_class}',
|
248 |
-
height=300
|
249 |
)
|
250 |
|
251 |
# Update layout for better visibility
|
@@ -253,7 +269,7 @@ with tab2:
|
|
253 |
xaxis_range=[0, 1],
|
254 |
yaxis_range=[0, 1],
|
255 |
margin=dict(l=40, r=40, t=40, b=40),
|
256 |
-
showlegend=False
|
257 |
)
|
258 |
|
259 |
# Add diagonal reference line
|
|
|
198 |
)
|
199 |
st.plotly_chart(fig, use_container_width=True)
|
200 |
|
201 |
+
# Create a shared legend container
|
202 |
+
legend_data = []
|
203 |
+
for i, model in enumerate(selected_models):
|
204 |
+
legend_data.append({
|
205 |
+
'Model': model,
|
206 |
+
'Visible': True,
|
207 |
+
'Index': i
|
208 |
+
})
|
209 |
+
legend_df = pd.DataFrame(legend_data)
|
210 |
+
|
211 |
+
# Create toggles for models using st.columns
|
212 |
+
st.markdown("### Select Models to Display:")
|
213 |
+
|
214 |
+
# Calculate how many columns we need (aim for about 4-5 models per row)
|
215 |
+
models_per_row = 4
|
216 |
+
num_rows = (len(selected_models) + models_per_row - 1) // models_per_row
|
217 |
+
|
218 |
+
for row in range(num_rows):
|
219 |
+
cols = st.columns(models_per_row)
|
220 |
+
for col_idx in range(models_per_row):
|
221 |
+
model_idx = row * models_per_row + col_idx
|
222 |
+
if model_idx < len(selected_models):
|
223 |
+
model = selected_models[model_idx]
|
224 |
+
# Store toggle state in session state with unique key
|
225 |
+
toggle_key = f"toggle_{model}"
|
226 |
+
if toggle_key not in st.session_state:
|
227 |
+
st.session_state[toggle_key] = True
|
228 |
+
st.session_state[toggle_key] = cols[col_idx].checkbox(
|
229 |
+
model,
|
230 |
+
value=st.session_state[toggle_key],
|
231 |
+
key=f"model_toggle_{model}"
|
232 |
+
)
|
233 |
+
|
234 |
# Individual Precision-Recall plots for each class
|
235 |
unique_classes = class_data['Class'].unique()
|
236 |
num_classes = len(unique_classes)
|
|
|
245 |
class_idx = row * 3 + col_idx
|
246 |
if class_idx < num_classes:
|
247 |
current_class = unique_classes[class_idx]
|
248 |
+
|
249 |
+
# Filter data based on visible models
|
250 |
+
visible_models = [model for model in selected_models
|
251 |
+
if st.session_state[f"toggle_{model}"]]
|
252 |
+
|
253 |
+
class_specific_data = class_data[
|
254 |
+
(class_data['Class'] == current_class) &
|
255 |
+
(class_data['Model'].isin(visible_models))
|
256 |
+
]
|
257 |
|
258 |
fig = px.scatter(
|
259 |
class_specific_data,
|
|
|
261 |
y='Recall',
|
262 |
color='Model',
|
263 |
title=f'Precision vs Recall: {current_class}',
|
264 |
+
height=300
|
265 |
)
|
266 |
|
267 |
# Update layout for better visibility
|
|
|
269 |
xaxis_range=[0, 1],
|
270 |
yaxis_range=[0, 1],
|
271 |
margin=dict(l=40, r=40, t=40, b=40),
|
272 |
+
showlegend=False # Hide individual legends
|
273 |
)
|
274 |
|
275 |
# Add diagonal reference line
|