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))
1. http://machinelearningmastery.com/feature-selection-machine-learning-python/
2. http://blog.datadive.net/selecting-good-features-part-i-univariate-selection/
3. http://www.montefiore.ulg.ac.be/~ernst/uploads/news/id63/extremely-randomized-trees.pdf
4. http://papers.nips.cc/paper/4928-understanding-variable-importances-in-forests-of-randomized-trees.pdf
2. http://blog.datadive.net/selecting-good-features-part-i-univariate-selection/
3. http://www.montefiore.ulg.ac.be/~ernst/uploads/news/id63/extremely-randomized-trees.pdf
4. http://papers.nips.cc/paper/4928-understanding-variable-importances-in-forests-of-randomized-trees.pdf
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?
ResponderEliminarHola Orlando
EliminarEn 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!