sábado, 30 de julio de 2016

Importancia de Variables


El siguiente script utiliza el algoritmo ExtraTreesClassifier para calcular la importancia de las variables del dataset titanic sobre la variable survived. En esta nota no se explica el algoritmo ni el calculo de importancia. Esto queda pendiente para una 2da nota.

Para otras métricas de importancia, ver referencia Nro. 1 y 2
Para detalle sobre el algoritmo ExtraTreesClassifier, ver nota Nro.3
Para detalle sobre el calculo de importancia de ExtraTreesClassifier, ver referencia Nro. 4

Conceptualmente el script hace esto:






































Script:

import numpy as np
import pandas as pd
from sklearn.ensemble import ExtraTreesClassifier


# CARGAR DATOS
# -------------------------------------------------------------------
dataset = pd.read_csv('https://www.dropbox.com/s/cugxdc9mhau4nw1/titanic2.csv?dl=1')
clase_name = 'survived' # nombre de variable a predecir
headers = dataset.columns.values.tolist()
headers.remove(clase_name)
clase   = dataset[clase_name].tolist() # array con variable a predecir
clase   = np.array(clase)


# CONVIERTE DATA.FRAME EN MATRIZ npy
# -------------------------------------------------------------------
dataset = dataset.drop(clase_name,1) # borra la clase del data set
dataset = dataset.as_matrix() # convierte en matriz
dataset = np.matrix(dataset) # convierte en matriz npy


# MODELO
# -------------------------------------------------------------------
model = ExtraTreesClassifier()
model.fit(dataset, clase)


# IMPORTANCIA VARIABLES
# -------------------------------------------------------------------
var_imp = pd.DataFrame({
 'feature':headers, 
 'v_importance':model.feature_importances_.tolist()
 })
print(var_imp.sort_values(by = 'v_importance', ascending=False))
Referencias

2 comentarios:

  1. buen artículo, quisiera saber si con otro algoritmo, por ejemplo regresión lineal múltiple o regresiones logísticas podemos determinar la importancia de características?

    ResponderEliminar
    Respuestas
    1. Hola Orlando
      En los modelos de regresion se puede interpretar a los coeficientes como la importancia de cada variable, suponiendo que todas las variables estan en la misma escala. Pero esto es solo como idea general, ya que depende del modelo utilizado.

      Te dejo un link donde hay mas detalles de esto:
      https://stats.stackexchange.com/questions/422769/feature-importance-for-linear-regression

      Espero te sirva mi comentario. Suerte!

      Eliminar