Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Introducción a Ensembles y Árboles de Decisión

29/32
Recursos

Aportes 33

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Amigosss… finalmente.
Probé a instalar graphviz de diferentes formas y ninguna me sirvió.
ESTA ES LA QUE FUNCIONA:

conda install -c conda-forge python-graphviz

Funciona perfectamente.
Como resultado de mis investigaciones, entiendan que PIP y ANACONDA no es lo mismo y que las instalaciones pueden variar.
Les dejo la lista de comandos que “no funcionaron”

pip install graphviz

conda install python-graphviz

conda install -c anaconda graphviz

En mi caso estoy usando Jupyter Notebook.
Por otro lado, aconsejan siempre descargar desde conda más que desde pip.
Por último, les dejo el enlace de donde obtuve la información

Intenté el árbol con 5 de profundidad y empieza a mostrar otras features importantes como imdb_socre, production_budget y opening_gross.

Para los que tienen problemas al momento de ejecutar la línea

graphviz.Source(treedot)

En el siguiente enlace muestran como solucionar el problema dependiendo que sistema operativo se use: https://stackoverflow.com/questions/35064304/runtimeerror-make-sure-the-graphviz-executables-are-on-your-systems-path-aft

este es el criterio de tipo cuadrático del que habla Juan Pablo, por el cual va aelegir mejor las features:

https://www.geeksforgeeks.org/python-mean-squared-error/#:~:text=The Mean Squared Error (MSE,of%20the%20squared%20error%20loss.

los que no les funciona graphviz entran a la consola y escriben

pip install graphviz

Virtudes de los arboles de decisión:

  • Metodo poderoso y probado.
  • Interpretables.
  • No necesitan escalar los datos.
  • Necesita menos pre-procesamiento de variables.

Me gustaria que se trabajaran modelos arima, sarima, arch, garch, e-garch,m-garch, i- garch

Las redes neuronales siempre son muy interesantes y funciona muy bien en 2 problemas acotados que son:

  • Vision por computador.
  • Analisis de texto.

Curso de POO y Algoritmos con Python, claro que si porque sino voy a seguir igual de embolatado con tanta informacion previa si conocerla.

Para los que tengan problemas para ejecutar graphviz en Windows, pueden revisar el siguiente artículo.
https://www.programmersought.com/article/7318590508/

Para los que tienen problemas con Graphviz en W10 y VSC, instalen el .exe tal cual la pagina:
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
Luego: Panel de control> Sistema y seguridad> Sistema> Configuración avanzada del sistema> Variables de entorno> Ruta> Editar> Nuevo
y luego agregue “la dirección del archivo bin de Graphviz en su sistema” y cierran el VSC, después lo abren normal y lo importan desde la consola pip install graphviz y listo.

Random Forest
Es un conjunto de árboles de decisión combinados, donde distintos árboles ven distintas porciones de los datos. Ningún árbol trata todos los datos de entrenamiento. Esto hace que cada árbol se entrene con distintas muestras de datos para un mismo problema. De esta forma, al combinar sus resultados, unos errores se compensan con otros y tenemos una predicción que generaliza mejor.

scikit-learn ofrece dos implementaciones de random forests:

Para clasificación: RandomForestClassifier
Para regressión: RandomForestRegressor

Tengo una duda, estaba moneando un poco el código ya que no me mostraba el gráfico, asumo fue porque estoy trabajando en la terminal y VScode, ya que esto me permite mantener un fácil acceso y manipulación de los archivos.
La cosa es que use otra forma de mostrar el grafico, en mi caso si es factible que me guarde un archivo png. El problema es que tiene valores similares pero no se si esta bien.
Imagen

Código

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import graphviz
from sklearn import tree

from sklearn.tree import export_graphviz
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split

#           PARA GRAFICAR
# Permite trabjar con archivos externos
from io import StringIO
# Permite interactuar y crear imagenes
from IPython.display import Image, display
# Genera los cada uno de los caminos
import pydotplus.graphviz


def graph(model, X):
    out = StringIO()
    tree.export_graphviz(model, out_file= out)
    graph = pydotplus.graph_from_dot_data(out.getvalue())
    graph.write_png('Tree.png')
    

def train(X, y):
    # profundidad del arbol / En este caso es dos por tema de visualizacion
    model = tree.DecisionTreeRegressor(max_depth=2)
    X_train, X_test, y_train, y_test = train_test_split(X,y)
    model = model.fit(X_train,y_train)

    graph(model, X)


def upload():
    X = pd.read_csv('../../Preparacion_de_datos/datasets/X_opening.csv')
    y = X['worldwide_gross']
    X = X.drop('worldwide_gross', axis=1)   
    train(X,y) 


def main():
    upload()

if __name__ =='__main__':
    main()



Las redes neuronales hoy por hoy funcionan muy bien en dos tipos de problemas: La visión de computador y Análisis de texto.

Los algoritmos de uso general que tienen la mejor performance son: Gradient Tree Boosting, Random Forest y Support Vector Machine.

es genial el curso aún queda mucho por aprender

  • Los algoritmos más conocidos de ensemble son: Random Forest y Gradient Boosted Trees. estos algoritmos hacen parte de la familia de algoritmos de árboles.
  • Support Vector Machine (SVM)
  • Deep Learning: Visión artificial, análisis de texto

Es claro que el contenido del curso ha sido editado, pues ya no se muestra como se creo el contenedor en docker, tambien seria bueno saber un poco mas sobre los datos que arroja el decision tree, pues si esta bien que haga el muestreo pero entonces el gross objetivo cual es?

buena Introducción a Ensembles

conda install -c anaconda python-graphviz

Al variar el número, mientras este aumenta, el árbol se vera con mayor detalle

En Random Forest se obtiene un dato de cada árbol de decisión y la salida del sistema será una combinación de todos ellos.

Para las personas que tienen error al momento de ejecutar graphviz.Source y están trabajando en una distribución de Linux Debian, el problema se resuelve instalando graphviz en la terminal como

sudo apt install graphviz

Hola comunidad, tengo una consulta: Si quisiera agregar variables categóricas a las features e implementar un árbol de decisión como modelo, lo sensato sería aplicar algún tipo de encoding a estas features categóricas correcto? Tal como se hizo en la regresión Lasso

Redes neuronales

A los que no les funciono graphviz.Source(treedot) en Jupyter Notebook: Pásense a Google Colab y esa es la solución mas “rapida”.

(Podrás intentar con todas las supuestas soluciones; activar los plugins, poner la ruta de graphviz al PATH de Windows, etc, etc, pero ninguna va a funcionar) y si a alguien si le funciono o logro solucionarlo, compartanlo porfavor.

El ensamble es combinar predicciones de varios modelos para producir mejores predicciones

Por si alguien aún tiene problemas con graphviz, puede estr relacionado con el ambiente virtual, l a recomendación que me funcionó es la siguiente:

"If you are using a conda environment, load the environment before checking the python version.

import sys

print(sys.version)

If they do not match, i.e. python 3.6.x vs python 3.7.x then give your jupyter notebook the ability to find the version of python you want.

conda install nb_conda_kernels

conda install ipykernel"

De: https://stackoverflow.com/questions/52566756/no-module-named-graphviz-in-jupyter-notebook

Si tienen un problema relacionado con
"NameError: name ‘export_graphviz’ is not defined”
intente esto:

!pip install --user --upgrade graphviz
from sklearn.tree import DecisionTreeClassifier, export_graphviz

A mí me funcionó.

Si alguien quiere profundizar en los temas, puede encontrar información en Guía de Aprendizaje

Árboles de Decisión


Un árbol de decisión es un mapa de los posibles resultados de una serie de decisiones relacionadas. Permite que un individuo o una organización comparen posibles acciones entre sí según sus costos, probabilidades y beneficios. Se pueden usar para dirigir un intercambio de ideas informal o trazar un algoritmo que anticipe matemáticamente la mejor opción.

Un árbol de decisión, por lo general, comienza con un único nodo y luego se ramifica en resultados posibles. Cada uno de esos resultados crea nodos adicionales, que se ramifican en otras posibilidades. Esto le da una forma similar a la de un árbol.

Hay tres tipos diferentes de nodos: nodos de probabilidad, nodos de decisión y nodos terminales. Un nodo de probabilidad, representado con un círculo, muestra las probabilidades de ciertos resultados. Un nodo de decisión, representado con un cuadrado, muestra una decisión que se tomará, y un nodo terminal muestra el resultado definitivo de una ruta de decisión.



Los árboles de decisión también se pueden dibujar con símbolos de diagramas de flujo,que a algunas personas les parecen más fáciles de leer y comprender.

Para saber más de los árboles de decisión les recomiendo este articulo:

Esta muy bueno para tener los conceptos generales y conocer algunas métricas.