diff --git a/calibration.py b/calibration.py index d321ee3..8e0923f 100644 --- a/calibration.py +++ b/calibration.py @@ -1,3 +1,4 @@ +import logging import numpy as np @@ -20,7 +21,18 @@ def calibration_curve(y_true, y_prob, *, n_bins=5, strategy="uniform"): "must be either 'quantile' or 'uniform'." ) - binids = np.digitize(y_prob, bins) - 1 + try: + binids = np.digitize(y_prob, bins) - 1 + except Exception as e: + np.set_printoptions(threshold=sys.maxsize) + logging.info("=" * 40) + logging.info(f"n_bins={n_bins}, strategy={strategy}") + logging.info(f"y_true={repr(y_prob)}") + logging.info(f"bins={repr(bins)}") + logging.info("=" * 40) + + raise e + bin_sums = np.bincount(binids, weights=y_prob, minlength=len(bins)) bin_true = np.bincount(binids, weights=y_true, minlength=len(bins)) diff --git a/strmlt.py b/strmlt.py index a38735c..b5079df 100644 --- a/strmlt.py +++ b/strmlt.py @@ -165,24 +165,14 @@ if __name__ == "__main__": # --- - for strategy in ['uniform', 'quantile']: - for n_bins in range(1, 300): - try: - fig = plotly_calibration(y_true, y_pred, n_bins=n_bins, strategy=strategy) - # st.plotly_chart(fig, use_container_width=True) + try: + fig = plotly_calibration(y_true, y_pred, n_bins=n_bins, strategy=strategy) + st.plotly_chart(fig, use_container_width=True) - fig = plotly_calibration_odds(y_true, y_pred, n_bins=n_bins, strategy=strategy) - # st.plotly_chart(fig, use_container_width=True) - - except: - st.warning("Hey! Unfortunately, there occured a mysterious error, which I haven't been able to reproduce locally. Try refreshing the page or changing the number of bins a bit. <3") - - np.set_printoptions(threshold=sys.maxsize) - logging.info("=" * 40) - logging.info(f"n_bins={n_bins}, strategy={strategy}") - logging.info(f"true={repr(y_true)}") - logging.info(f"y_pred={repr(y_pred)}") - logging.info("=" * 40) + fig = plotly_calibration_odds(y_true, y_pred, n_bins=n_bins, strategy=strategy) + st.plotly_chart(fig, use_container_width=True) + except Exception as e: + st.warning("Hey! Unfortunately, a very mysterious error occured. Try refreshing the page or changing the number of bins a bit.") # overconf = overconfidence(y_true, y_pred) # st.write(f"Your over/under- confidence score is {overconf:.2f}.")