File size: 6,599 Bytes
890025a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import streamlit as st



#  Define Hyperparameter Options
def get_hyperparams_ui(model_name):
            """Generate UI components for model-specific hyperparameters."""
            hyperparams = {}

            if model_name in ["Random Forest Regressor", "Random Forest"]:
                hyperparams["n_estimators"] = st.number_input("Number of Trees (n_estimators)", min_value=10, max_value=500, value=100)
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=50, value=10)
                hyperparams["min_samples_split"] = st.number_input("Min Samples Split", min_value=2, max_value=10, value=2)

            elif model_name in ["XGBoost Regressor", "XGBoost"]:
                hyperparams["n_estimators"] = st.number_input("Number of Boosting Rounds (n_estimators)", min_value=10, max_value=500, value=100)
                hyperparams["learning_rate"] = st.slider("Learning Rate", 0.01, 1.0, 0.1)
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=50, value=6)

            elif model_name == "Linear Regression":
                st.info("No hyperparameters required for Linear Regression.")

            # New Regression Models:
            elif model_name == "Polynomial Regression":
                hyperparams["degree"] = st.number_input("Degree of Polynomial Features", min_value=2, max_value=10, value=2)
                # You may add additional hyperparameters for the underlying LinearRegression if needed

            elif model_name == "Ridge Regression":
                hyperparams["alpha"] = st.slider("Regularization Strength (alpha)", 0.01, 10.0, 1.0)
                hyperparams["solver"] = st.selectbox("Solver", ["auto", "svd", "cholesky", "lsqr", "sparse_cg", "sag", "saga", "lbfgs"])

            elif model_name == "Lasso Regression":
                hyperparams["alpha"] = st.slider("Regularization Strength (alpha)", 0.01, 10.0, 1.0)
                hyperparams["max_iter"] = st.number_input("Max Iterations", min_value=100, max_value=1000, value=1000)



            elif model_name == "Logistic Regression":
                hyperparams["C"] = st.slider("Regularization Strength (C)", 0.01, 10.0, 1.0)
                hyperparams["max_iter"] = st.number_input("Max Iterations", min_value=100, max_value=1000, value=200)

            elif model_name == "Support Vector Regressor":
                hyperparams["C"] = st.slider("Regularization parameter (C)", 0.1, 100.0, 1.0)
                hyperparams["epsilon"] = st.slider("Epsilon", 0.0, 1.0, 0.1)
                hyperparams["kernel"] = st.selectbox("Kernel", ["linear", "rbf", "poly", "sigmoid"])

            elif model_name == "Decision Tree Regressor":
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=50, value=10)
                hyperparams["min_samples_split"] = st.number_input("Min Samples Split", min_value=2, max_value=10, value=2)

            elif model_name == "K-Nearest Neighbors Regressor":
                hyperparams["n_neighbors"] = st.number_input("Number of Neighbors", min_value=1, max_value=100, value=5)
                hyperparams["weights"] = st.selectbox("Weight Function", ["uniform", "distance"])

            elif model_name == "ElasticNet":
                hyperparams["alpha"] = st.slider("Alpha", 0.01, 10.0, 1.0)
                hyperparams["l1_ratio"] = st.slider("L1 Ratio", 0.0, 1.0, 0.5)

            elif model_name == "Gradient Boosting Regressor":
                hyperparams["n_estimators"] = st.number_input("Number of Estimators", min_value=10, max_value=500, value=100)
                hyperparams["learning_rate"] = st.slider("Learning Rate", 0.01, 1.0, 0.1)
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=20, value=3)

            elif model_name == "AdaBoost Regressor":
                hyperparams["n_estimators"] = st.number_input("Number of Estimators", min_value=10, max_value=500, value=50)
                hyperparams["learning_rate"] = st.slider("Learning Rate", 0.01, 1.0, 0.1)

            elif model_name == "Bayesian Ridge":
                hyperparams["alpha_1"] = st.slider("Alpha 1", 1e-6, 1e-1, 1e-4, format="%.6f")
                hyperparams["alpha_2"] = st.slider("Alpha 2", 1e-6, 1e-1, 1e-4, format="%.6f")
                hyperparams["lambda_1"] = st.slider("Lambda 1", 1e-6, 1e-1, 1e-4, format="%.6f")
                hyperparams["lambda_2"] = st.slider("Lambda 2", 1e-6, 1e-1, 1e-4, format="%.6f")

            # --- Additional Classification Models ---
            elif model_name == "Support Vector Classifier":
                hyperparams["C"] = st.slider("Regularization parameter (C)", 0.1, 100.0, 1.0)
                hyperparams["kernel"] = st.selectbox("Kernel", ["linear", "rbf", "poly", "sigmoid"])

            elif model_name == "Decision Tree Classifier":
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=50, value=10)
                hyperparams["min_samples_split"] = st.number_input("Min Samples Split", min_value=2, max_value=10, value=2)

            elif model_name == "K-Nearest Neighbors Classifier":
                hyperparams["n_neighbors"] = st.number_input("Number of Neighbors", min_value=1, max_value=100, value=5)
                hyperparams["weights"] = st.selectbox("Weight Function", ["uniform", "distance"])

            elif model_name == "Gradient Boosting Classifier":
                hyperparams["n_estimators"] = st.number_input("Number of Estimators", min_value=10, max_value=500, value=100)
                hyperparams["learning_rate"] = st.slider("Learning Rate", 0.01, 1.0, 0.1)
                hyperparams["max_depth"] = st.number_input("Max Depth", min_value=1, max_value=20, value=3)

            elif model_name == "AdaBoost Classifier":
                hyperparams["n_estimators"] = st.number_input("Number of Estimators", min_value=10, max_value=500, value=50)
                hyperparams["learning_rate"] = st.slider("Learning Rate", 0.01, 1.0, 0.1)

            elif model_name == "Gaussian Naive Bayes":
                hyperparams["var_smoothing"] = st.slider("Var Smoothing", 1e-12, 1e-8, 1e-9, format="%.12f")

            elif model_name == "Quadratic Discriminant Analysis":
                hyperparams["reg_param"] = st.slider("Regularization Parameter", 0.0, 1.0, 0.0)

            elif model_name == "Linear Discriminant Analysis":
                hyperparams["solver"] = st.selectbox("Solver", ["svd", "lsqr", "eigen"])



            return hyperparams