Skip to content

Commit 147c79e

Browse files
authored
Update html_report.py
1 parent af5d7ef commit 147c79e

File tree

1 file changed

+59
-3
lines changed

1 file changed

+59
-3
lines changed

cpm/reporting/html_report.py

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,15 @@ def generate_html_report(self):
5353
edges_table_page = self.generate_edge_page()
5454
network_strength_page = self.generate_network_strengths_page()
5555
data_description_page = self.generate_data_description_page()
56+
hyperparameters_page = self.generate_hyperparameters_page()
5657
report_blocks = [
5758
info_page,
5859
main_results_page,
5960
network_strength_page,
6061
edges_page,
6162
edges_table_page,
62-
data_description_page
63+
data_description_page,
64+
hyperparameters_page
6365
]
6466

6567
main_tabs = ar.Select(blocks=report_blocks)
@@ -75,8 +77,63 @@ def generate_html_report(self):
7577
open=False, formatting=ar.Formatting(width=ar.Width.FULL, accent_color="orange"))
7678
return
7779

80+
def generate_hyperparameters_page(self):
81+
try:
82+
if 'params' not in self.df.columns:
83+
return ar.Blocks(blocks=[ar.Text("No hyperparameters found in results.")],
84+
label='Hyperparameters')
85+
86+
hyper_df = self.df[['fold', 'model', 'params']].copy()
87+
88+
if isinstance(hyper_df['params'].iloc[0], dict):
89+
hyper_df['params'] = hyper_df['params'].apply(
90+
lambda x: "\n".join(f"{k}: {v}" for k, v in x.items())
91+
)
92+
93+
hyper_table = ar.DataTable(
94+
df=hyper_df,
95+
label='Hyperparameters by Fold and Model'
96+
)
97+
98+
try:
99+
if isinstance(self.df['params'].iloc[0], dict):
100+
all_params = pd.json_normalize(self.df['params'])
101+
param_summary = all_params.describe().T
102+
summary_table = ar.DataTable(
103+
df=param_summary,
104+
label='Hyperparameter Summary Statistics'
105+
)
106+
107+
return ar.Blocks(
108+
blocks=[
109+
ar.Text("## Model Hyperparameters"),
110+
ar.Text("### Parameters Used in Each Fold"),
111+
hyper_table,
112+
ar.Text("### Parameter Summary Across Folds"),
113+
summary_table
114+
],
115+
label='Hyperparameters'
116+
)
117+
except Exception:
118+
pass
119+
120+
return ar.Blocks(
121+
blocks=[
122+
ar.Text("## Model Hyperparameters"),
123+
ar.Text("### Parameters Used in Each Fold"),
124+
hyper_table
125+
],
126+
label='Hyperparameters'
127+
)
128+
129+
except Exception as e:
130+
return ar.Blocks(
131+
blocks=[ar.Text(f"Could not generate hyperparameters page: {str(e)}")],
132+
label='Hyperparameters'
133+
)
134+
78135
def generate_data_description_page(self):
79-
target_column_name = 'y_true' # Or 'y_pred' if that's your target
136+
target_column_name = 'y_true'
80137
target_series = self.df_predictions[target_column_name]
81138

82139
target_desc = f"""
@@ -89,7 +146,6 @@ def generate_data_description_page(self):
89146
- Standard deviation: {target_series.std():.2f}
90147
"""
91148

92-
# Create feature description
93149
feature_desc = """
94150
## Dummy Feature Description
95151

0 commit comments

Comments
 (0)