Decision Tree for Regression
En esta ocasión nos topamos con otra forma de analizar las regresiones, esta es con un modelo de arboles de decisión, estos algoritmos están basados en la selección por nodos (binarios), este esta altamente relacionado con la entropía.
El principio de esto se basa en una decisión simple, cada atributo es analizado por una decisión (en forma de nodos)
En los beneficios de un árbol de decisión tenemos que es uno de esos algoritmos que nos permiten entender de manera natural sus resultados, pueden funcionar para casi todo tipo de dato sin importar como esté distribuido, lo malo es que dependiendo de sus configuraciones el overfit o el underfit, lo afectan mucho.
Decision Tree Scikit Learn
1.- Importar Librerías
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
2.- Importar Dataset
df = pd.read_csv('petrol_consumption.csv')
Revisando algunos dataset de kaggle encontré el dataset de petrol consumption desde aquí pueden verlo
3.- Analizar Data
df.head() df.describe() df.info()
Al tener nuestro dataframe cargado, obtenemos su vistazo inmediato tanto con head() y describe(), luego un info() para saber el tipo de variables y cuantos nulos encontramos.
4.- PreProcesar Data
from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler
X = df[['Petrol_tax','Average_income','Paved_Highways','Population_Driver_licence(%)']] y = df[['Petrol_Consumption']]
X_train , X_test , y_train , y_test = train_test_split(X, y, test_size = 0.3 , random_state = 329)
En esta etapa al verificar la distribución de la data, estandarizamos nuestra data, de hecho hace poco se generó un post de ejemplo respecto a estandarizar la data.
5.- Entrenar Algoritmo y hacer Predicción
from sklearn.linear_model import LinearRegression model = DecisionTreeRegressor().fit(X_train,y_train) pred = model.predict(X_train) from sklearn import metrics print('MAE', metrics.mean_absolute_error(y_test['Petrol_Consumption'],y_test['result'])) print('MSE', metrics.mean_squared_error(y_test['Petrol_Consumption'],y_test['result'])) print('RMSE', np.sqrt(metrics.mean_squared_error(y_test['Petrol_Consumption'],y_test['result'])))
Generamos la predicción este modelo de arboles de decisión y sus estadísticos principales
En pocas palabras algunos resultados fueron muy buenos y otros muy malos, al revisar sus test nos indica que el modelo no fue muy bueno (claramente, no estamos ajustando ni usando hiperparametros, lo importante es comentar que se pueden mejorar)