<jupyter_start><jupyter_text>Árbol de Decisiones<jupyter_code>import pandas as pd
from sklearn.tree import DecisionTreeClassifier # Importar el Clasificador
from sklearn.model_selection import train_test_split # Importar funciones de partición
from sklearn import metrics # Importar las métricas de scikit-learn
from sklearn.tree import export_graphviz
from six import StringIO
from IPython.display import Image
import pydotplus
import os
df = pd.read_csv('rating-peliculas.csv')
df
df.describe()
y = df.genero
y.value_counts()
len(y)
X = df.drop(['pelicula', 'genero'], axis = 1)
 # Dividir la muestra para poder probar el desempeño del modelo en 2 partes.
# Se divide en X y en Y. Esto es una parte de la base que el modelo nunca verá y que nos permitirá probar con más certeza el desempeño del modelo.
X_train,X_test, y_train, y_test = train_test_split(X, y, test_size = 0.6, random_state = 1)
# clf = classifier
clf = DecisionTreeClassifier(criterion = 'entropy', max_depth = 3)
clf = clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
y_pred
# StringIO nos va a permitir establecer las reglas del árbol de decisión que generamos en strings.
dot_data = StringIO()
# Después usamos la función export_graphviz, sobre él vamos a pasar el árbol de decisión entrenado y un outfile, que utilizará el dot_data generado anteriormente.
# filled y rounded son parámetros de visualización.
export_graphviz(clf, out_file = dot_data, filled = True, rounded = True,
                special_characters = True, feature_names = X.columns, class_names = y.value_counts().index)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('Películas.png')
Image(graph.create_png())
metrics.accuracy_score(y_test, y_pred)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.07806267806267807, 'fraction_numerical': 0.003418803418803419, 'mean_word_length': 5.479704797047971, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '478315', 'license': 'MIT', 'n_tokens_mistral': 613, 'n_tokens_neox': 600, 'n_words': 193, 'path': 'scripts/5-modelos-estadisticos-exploracion-prediccion/3-arbol-decision/arbol-decision.ipynb', 'repo_name': 'OscarPalominoC/CursoFundamentosDeEstadisticaYAnalisisDeDatosConPython', 'size': '1755'}