from sklearn.model_selection import train_test_splitx = np.array(df[["Delivery_person_Age", "Delivery_person_Ratings", "distance"]])y = np.array(df[["Time_taken(min)"]])xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.20, random_state=42)from sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score# Train the modellr_model = LinearRegression()lr_model.fit(xtrain, ytrain)# Predictlr_preds = lr_model.predict(xtest)# Evaluationprint("Linear Regression:")print("MAE:", mean_absolute_error(ytest, lr_preds))print("MSE:", mean_squared_error(ytest, lr_preds))print("RMSE:", np.sqrt(mean_squared_error(ytest, lr_preds)))print("R² Score:", r2_score(ytest, lr_preds))from sklearn.ensemble import RandomForestRegressor# Train the modelrf_model = RandomForestRegressor(n_estimators=100, random_state=42)rf_model.fit(xtrain, ytrain.ravel())# Predictrf_preds = rf_model.predict(xtest)# Evaluationprint("Random Forest Regressor:")print("MAE:", mean_absolute_error(ytest, rf_preds))print("MSE:", mean_squared_error(ytest, rf_preds))print("RMSE:", np.sqrt(mean_squared_error(ytest, rf_preds)))print("R² Score:", r2_score(ytest, rf_preds))from sklearn.ensemble import GradientBoostingRegressorgbr_model = GradientBoostingRegressor()gbr_model.fit(xtrain, ytrain.ravel())gbr_preds = gbr_model.predict(xtest)print("Gradient Boosting:")print("MAE:", mean_absolute_error(ytest, gbr_preds))print("RMSE:", np.sqrt(mean_squared_error(ytest, gbr_preds)))print("R² Score:", r2_score(ytest, gbr_preds))results = { "Model": [], "MAE": [], "RMSE": [], "R² Score": []}# List of model names and trained modelsmodel_names = ["Linear Regression", "Random Forest", "Gradient Boost"]trained_models = [lr_model, rf_model, gbr_model] # replace with your trained model variables# Evaluate modelsfor name, model in zip(model_names, trained_models): preds = model.predict(xtest) results["Model"].append(name) results["MAE"].append(round(mean_absolute_error(ytest, preds), 2)) results["RMSE"].append(round(np.sqrt(mean_squared_error(ytest, preds)), 2)) results["R² Score"].append(round(r2_score(ytest, preds), 2))# Create summary DataFramesummary_df = pd.DataFrame(results)print(summary_df)