no-code-ml / regression.py
BadriNarayanan S
Push from Local
e32ddb1
import joblib
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import (
LinearRegression, Ridge, Lasso, ElasticNet, BayesianRidge, PassiveAggressiveRegressor
)
from sklearn.svm import SVR
from sklearn.neighbors import KNeighborsRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import (
RandomForestRegressor, GradientBoostingRegressor, AdaBoostRegressor, ExtraTreesRegressor,
BaggingRegressor
)
import xgboost as xgb
import lightgbm as lgb
import catboost as cb
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error, mean_absolute_percentage_error,root_mean_squared_error
# Dictionary of all regression models
regression_models = {
"linear_regression": LinearRegression(),
"ridge": Ridge(),
"lasso": Lasso(),
"elastic_net": ElasticNet(),
"bayesian_ridge": BayesianRidge(),
"passive_aggressive": PassiveAggressiveRegressor(),
"svr": SVR(),
"knn": KNeighborsRegressor(),
"decision_tree": DecisionTreeRegressor(),
"random_forest": RandomForestRegressor(),
"gradient_boosting": GradientBoostingRegressor(),
"ada_boost": AdaBoostRegressor(),
"extra_trees": ExtraTreesRegressor(),
"bagging": BaggingRegressor(),
"xgboost": xgb.XGBRegressor(),
"lightgbm": lgb.LGBMRegressor(),
"catboost": cb.CatBoostRegressor(verbose=0)
}
# Function to train and evaluate a regression model
def train_regression_model(model_name, X_train, X_test, y_train, y_test):
model = regression_models[model_name]
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
metrics = {
"R2": r2_score(y_test, y_pred),
"MSE": mean_squared_error(y_test, y_pred),
"RMSE": root_mean_squared_error(y_test, y_pred),
"MAE": mean_absolute_error(y_test, y_pred),
"MAPE": mean_absolute_percentage_error(y_test, y_pred)
}
return model, metrics,y_pred