Cómo crear árboles de clasificación y regresión en python para la ciencia de datos

científicos de datos llaman árboles que se especializan en clases de adivinanzas en la clasificación Python árboles- árboles que trabajan con la estimación vez que se conoce como árboles de regresión. Aquí hay un problema de clasificación, utilizando datos del iris de Fisher:

Video: Arboles Binarios en Python 3

de sklearn.datasets importar load_irisiris = load_iris () X, Y = iris.data, iris.targetfeatures = iris.feature_names

Después de cargar los datos en x, que contiene predictores, y y, el cual tiene las clasificaciones, se puede definir una validación cruzada para comprobar los resultados utilizando árboles de decisión:

de sklearn.cross_validation importación cross_val_scorefrom sklearn.cross_validation importación KFoldcrossvalidation = KFold (n = X.shape [0], n_folds = 5, barajadura = True, random_state = 1)

Utilizando el DecisionTreeClassifier clase, se define máxima profundidad dentro de un bucle iterativo para experimentar con el efecto de aumentar la complejidad del árbol resultante. La expectativa es llegar a un punto ideal rápidamente y luego presenciar la disminución de rendimiento de validación cruzada debido sobreajuste:

Video: Tutorial RM: Arboles de Regresion

de importación sklearn treefor profundidad en el rango de (1,10): tree_classifier = tree.DecisionTreeClassifier (max_depth = profundidad, random_state = 0) si tree_classifier.fit (X, y) .tree_.max_depth lt; Profundidad: breakscore = np.mean (cross_val_score (tree_classifier, X, Y, anotando = `exactitud`, cv = validación cruzada, n_jobs = 1)) de impresión `Profundidad:% i Precisión:% .3f` % (profundidad, puntuación) Profundidad : 1 Precisión: 0.580Depth: 2 Precisión: 0.913Depth: 3 Precisión: 0.920Depth: 4 Precisión: 0.940Depth: 5 Precisión: 0,920

La mejor solución es un árbol con cuatro divisiones. Echa un vistazo a la complejidad del árbol resultante.

Un modelo de árbol del conjunto de datos Iris usando una profundidad de cuatro divisiones.

Video: Curso BD || Sesion 11.2 || Minería de Datos

Un modelo de árbol del conjunto de datos Iris usando una profundidad de cuatro divisiones.

Para obtener una reducción y simplificación efectiva, se puede establecer min_samples_división a 30 y evitar hojas terminales que son demasiado pequeños. Este ajuste poda sale de la pequeña terminal en el nuevo árbol resultante, lo que disminuye la precisión de validación cruzada, pero el aumento de la simplicidad y el poder de generalización de la solución.

tree_classifier = tree.DecisionTreeClassifier (min_samples_split = 30, min_samples_leaf = 10, random_state = 0) tree_classifier.fit (X, y) puntuación = np.mean (cross_val_score (tree_classifier, X, Y, y asegurar la exactitud `` =, cv = validación cruzada, n_jobs = 1)) de impresión `Precisión:% .3f` % scoreAccuracy: 0,913

De manera similar, utilizando el DecisionTreeRegressor clase, puede modelar un problema de regresión, como el Boston conjunto de datos de precios de vivienda. Cuando se trata de un árbol de regresión, las hojas terminales ofrecen la media de los casos como la salida de predicción.

Video: Tutorial RM: Arboles de Clasificacion

de sklearn.datasets importar load_bostonboston = load_boston () X, Y = boston.data, boston.targetfeatures = boston.feature_namesfrom sklearn.tree importación DecisionTreeRegressorregression_tree = tree.DecisionTreeRegressor (min_samples_split = 30, min_samples_leaf = 10, random_state = 0) regression_tree.fit (X, y) puntuación = np.mean (cross_val_score (regression_tree, X, Y, puntuación = `mean_squared_error`, cv = validación cruzada, n_jobs = 1)) de impresión `cuadrado medio del error:% .3f` % abs (puntuación) media de error al cuadrado: 22.593
Artículos Relacionados