train_regression / models /supervised /regression /decision_tree_regressor.py
mboukabous's picture
Add application file
829e3ac
"""
This module sets up a Decision Tree Regressor with hyperparameter tuning.
Features:
- Uses `DecisionTreeRegressor` estimator from scikit-learn.
- Defines a hyperparameter grid for tree-specific parameters.
- Handles non-linear relationships and interactions.
Special Considerations:
- Decision Trees are not affected by feature scaling.
- Can easily overfit; control tree depth and splitting criteria.
- No need for scaling transformers in the preprocessing pipeline.
"""
from sklearn.tree import DecisionTreeRegressor
# Define the estimator
estimator = DecisionTreeRegressor(random_state=42)
# Define the hyperparameter grid
param_grid = {
'model__criterion': ['squared_error', 'absolute_error'], # Only two key criteria
'model__max_depth': [5, 10, 20, None], # Depth variations
'model__min_samples_split': [2, 10], # Commonly used values
'model__min_samples_leaf': [1, 4], # Few values for leaves
'preprocessor__num__imputer__strategy': ['mean'], # Focused on a single strategy
}
# Optional: Define the default scoring metric
default_scoring = 'neg_root_mean_squared_error'