experiments/different_sketch_sizes_time_bar_plots.py [489:618]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        title = f"{self.dataset_name} Relative Residual Norms over Iterations"
        fig = plot_runs_over_iterations(
            filtered_run_names, formatted_run_names, self.residual_norms_df,
        )

        if save_path:
            split_title = title.lower().split(" ")
            file_name = exp_name + "_" + ("_").join(split_title[1:])
            sketch_size_formula = sketch_size_formula.replace("^", "_power_").replace(
                "/", "_over_"
            )
            file_name = "_".join((file_name, solver, sketch_size_formula))
            file_name = file_name.replace(" = ", "_equals_")
            file_name = file_name.replace("sqrt(m)", "sqrt_m")
            file_name = re.sub("[()]", "", file_name)
            full_path = os.path.join(save_path, f"{file_name}.pdf")
            fig.write_image(full_path)
        else:
            fig.show()

        # Time plot
        fig_time = plot_runs_over_time(
            filtered_run_names,
            formatted_run_names,
            self.times_df,
            self.residual_norms_df,
        )

        if save_path:
            split_title = title.lower().split(" ")
            file_name = exp_name + "_" + ("_").join(split_title[1:])
            sketch_size_formula = sketch_size_formula.replace("^", "_power_").replace(
                "/", "_over_"
            )
            file_name = "_".join((file_name, solver, sketch_size_formula))
            file_name = file_name.replace(" = ", "_equals_")
            file_name = file_name.replace("sqrt(m)", "sqrt_m")
            file_name = re.sub("[()]", "", file_name)
            full_path = os.path.join(save_path, f"{file_name}_time.pdf")

            fig_time.write_image(full_path)
        else:
            fig_time.show()


def load_model(
    solver,
    sketch_size,
    algo_mode,
    step_size,
    mom_beta,
    mom_eta,
    regularizer,
    is_kernel,
    use_heuristic,
    tolerance,
    max_iter,
    random_state,
):
    if not is_kernel:
        model = RidgeSketch(
            alpha=regularizer,
            fit_intercept=True,
            tol=tolerance,
            solver=solver,
            sketch_size=sketch_size,
            algo_mode=algo_mode,
            step_size=step_size,
            mom_beta=mom_beta,
            mom_eta=mom_eta,
            use_heuristic=use_heuristic,
            max_iter=max_iter,
            operator_mode=False,
            random_state=random_state,
            verbose=0,
        )
    else:
        model = KernelRidgeSketch(
            alpha=regularizer,
            tol=tolerance,
            solver=solver,
            sketch_size=sketch_size,
            algo_mode=algo_mode,
            step_size=step_size,
            mom_beta=mom_beta,
            mom_eta=mom_eta,
            use_heuristic=use_heuristic,
            max_iter=max_iter,
            kernel="RBF",
            kernel_sigma=1.0,
            kernel_nu=0.5,
            random_state=random_state,
            verbose=0,
        )

    return model


def filter_run_names_exp(run_names, solver, sketch_size_formula):
    """Filter runs for given solver and sketch_size_formula"""
    solver_run_names = [
        run_name for run_name in run_names if solver == run_name.split(" | ")[1]
    ]
    run_names = [n for n in solver_run_names if sketch_size_formula in n]

    # To alwayshave in the same order:
    # no momentum, then constant momentum, then increasing momentum
    run_names.sort(reverse=True)
    run_names = [run_names[0], run_names[2], run_names[1]]
    return run_names


def format_run_names_exp(run_names, solver, sketch_size_formula):
    """
    Selects and formats run names based on run name, solver and sketch size
    """
    # formatted_run_names = ["|".join(r.split("|")[:-1]).strip() for r in run_names]
    # formatted_run_names = [r.split(" |")[0] for r in run_names]
    formatted_run_names = []
    for r in run_names:
        mom_version = r.split(" |")[0]
        if mom_version == "inc_mom":
            formatted_run_names.append("increasing momentum")
        elif mom_version == "cst_mom":
            formatted_run_names.append("constant momentum")
        elif mom_version == "no_mom":
            formatted_run_names.append("no momentum")
        else:
            raise ValueError("Unknown momentum version")
    return formatted_run_names
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



experiments/momentum_regimes.py [449:578]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        title = f"{self.dataset_name} Relative Residual Norms over Iterations"
        fig = plot_runs_over_iterations(
            filtered_run_names, formatted_run_names, self.residual_norms_df,
        )

        if save_path:
            split_title = title.lower().split(" ")
            file_name = exp_name + "_" + ("_").join(split_title[1:])
            sketch_size_formula = sketch_size_formula.replace("^", "_power_").replace(
                "/", "_over_"
            )
            file_name = "_".join((file_name, solver, sketch_size_formula))
            file_name = file_name.replace(" = ", "_equals_")
            file_name = file_name.replace("sqrt(m)", "sqrt_m")
            file_name = re.sub("[()]", "", file_name)
            full_path = os.path.join(save_path, f"{file_name}.pdf")
            fig.write_image(full_path)
        else:
            fig.show()

        # Time plot
        fig_time = plot_runs_over_time(
            filtered_run_names,
            formatted_run_names,
            self.times_df,
            self.residual_norms_df,
        )

        if save_path:
            split_title = title.lower().split(" ")
            file_name = exp_name + "_" + ("_").join(split_title[1:])
            sketch_size_formula = sketch_size_formula.replace("^", "_power_").replace(
                "/", "_over_"
            )
            file_name = "_".join((file_name, solver, sketch_size_formula))
            file_name = file_name.replace(" = ", "_equals_")
            file_name = file_name.replace("sqrt(m)", "sqrt_m")
            file_name = re.sub("[()]", "", file_name)
            full_path = os.path.join(save_path, f"{file_name}_time.pdf")

            fig_time.write_image(full_path)
        else:
            fig_time.show()


def load_model(
    solver,
    sketch_size,
    algo_mode,
    step_size,
    mom_beta,
    mom_eta,
    regularizer,
    is_kernel,
    use_heuristic,
    tolerance,
    max_iter,
    random_state,
):
    if not is_kernel:
        model = RidgeSketch(
            alpha=regularizer,
            fit_intercept=True,
            tol=tolerance,
            solver=solver,
            sketch_size=sketch_size,
            algo_mode=algo_mode,
            step_size=step_size,
            mom_beta=mom_beta,
            mom_eta=mom_eta,
            use_heuristic=use_heuristic,
            max_iter=max_iter,
            operator_mode=False,
            random_state=random_state,
            verbose=0,
        )
    else:
        model = KernelRidgeSketch(
            alpha=regularizer,
            tol=tolerance,
            solver=solver,
            sketch_size=sketch_size,
            algo_mode=algo_mode,
            step_size=step_size,
            mom_beta=mom_beta,
            mom_eta=mom_eta,
            use_heuristic=use_heuristic,
            max_iter=max_iter,
            kernel="RBF",
            kernel_sigma=1.0,
            kernel_nu=0.5,
            random_state=random_state,
            verbose=0,
        )

    return model


def filter_run_names_exp(run_names, solver, sketch_size_formula):
    """Filter runs for given solver and sketch_size_formula"""
    solver_run_names = [
        run_name for run_name in run_names if solver == run_name.split(" | ")[1]
    ]
    run_names = [n for n in solver_run_names if sketch_size_formula in n]

    # To alwayshave in the same order:
    # no momentum, then constant momentum, then increasing momentum
    run_names.sort(reverse=True)
    run_names = [run_names[0], run_names[2], run_names[1]]
    return run_names


def format_run_names_exp(run_names, solver, sketch_size_formula):
    """
    Selects and formats run names based on run name, solver and sketch size
    """
    # formatted_run_names = ["|".join(r.split("|")[:-1]).strip() for r in run_names]
    # formatted_run_names = [r.split(" |")[0] for r in run_names]
    formatted_run_names = []
    for r in run_names:
        mom_version = r.split(" |")[0]
        if mom_version == "inc_mom":
            formatted_run_names.append("increasing momentum")
        elif mom_version == "cst_mom":
            formatted_run_names.append("constant momentum")
        elif mom_version == "no_mom":
            formatted_run_names.append("no momentum")
        else:
            raise ValueError("Unknown momentum version")
    return formatted_run_names
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



