<jupyter_start><jupyter_text>03. Arboles de Decision     Resolver dudas → Pregunta en  Discord    Tutoriales →  YouTube    Reservar Clases → @ sotastica  Cargar Datos > Cargamos los datos del titanic para predecir la **probabilidad de que una persona sobreviva** en función de otras características como la **edad, sexo**, etc...```pythonsns.load_dataset(name='titanic')```<jupyter_code>import seaborn as sns
df = sns.load_dataset(name='titanic').iloc[:, :4].dropna()
df.head()
df.head()
df.sample(4)<jupyter_output><empty_output><jupyter_text>Seleccionar Variables para el Modelo > Comúnmente se conoce a esta temática de la Estadística como **Análisis Exploratorio de los Datos _(EDA)_**. El objetivo fundamental de este tópico es encontrar las variables que más se correlacionen y que den a entender un modelo de Árboles de Decisión, donde la variable objetivo debería ser categórica.>> No vamos a aentrar mucho en detalle, de momento. Así que tan solo seleccionaremos variables que nos parezcan interesantes. Estas variables deberemos distinguirlas según su papel en el modelo:>> 1.  Explicativas/Features/Input `X`> 2.  Objetivo/Class/Target `y`<jupyter_code>df.head()
objetivo = df.survived
explicativas = df.drop(columns='survived')<jupyter_output><empty_output><jupyter_text>Modelo de Árboles de Decisión `DecisionTreeClassifier()`  Entrenar Modelo > 1. **Necesidad:** Entrenar Modelo> 2. **Solución: Función** `fit()`<jupyter_code>from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
import pandas as pd
model.fit(X=explicativas, y=objetivo)
df_copy = pd.get_dummies(df, drop_first=True)
sns.heatmap(df_copy.corr(), annot=True)
df.survived.value_counts()
df.sex.value_counts()
df.groupby(['survived', 'sex']).size().to_frame(name='freq')
explicativas = pd.get_dummies(explicativas, drop_first=True)
explicativas = explicativas.dropna()
model = DecisionTreeClassifier(max_depth=3)
model.fit(X=explicativas, y=objetivo)<jupyter_output><empty_output><jupyter_text>Visualización del Modelo > - `tree.plot_tree()`<jupyter_code>from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
plt.figure(figsize=(12,8))
plot_tree(decision_tree=model, feature_names=explicativas.columns, filled=True);
39/330
model.predict_proba(X=explicativas.loc[281].values.reshape(1,-1))
a = df.sample()
explicativas.loc[281]
a<jupyter_output><empty_output><jupyter_text>Predicciones con el Modelo > - `model.predict_proba()`> - `model.predict()`<jupyter_code>model.predict_proba(explicativas)<jupyter_output><empty_output><jupyter_text>Interpretación del Modelo > ¿Qué tiene que ver el **Análisis Exploratorio de los Datos _(EDA)_** con la Interpretación del Modelo?<jupyter_code>explicativas_cat = df.loc[:, df.dtypes == 'object'].drop(columns='uso_internet').columns
comb = list(zip(explicativas_cat, range(3)))
comb
### Variables Numéricas

#### Método Gráfico

# A la hora de visualizar la relación entre las diferentes variables numércias explicativas, no podemos hacer un conteo como antes. Sino que debemos ver cómo se distribuyen estas variables en las distintas categorías de la variable objetivo.

# Podemos hacer diferentes gráficas:

explicativas_num = [i for i in dfsel.columns if i not in explicativas_cat]
explicativas_num.remove('survived')
comb = list(zip(explicativas_num, range(len(explicativas_num))))
comb


##### Histograma

fig, axs = plt.subplots(ncols=4, figsize=(20,6))
fig.suptitle('Vertically stacked subplots')

for i,j in comb:
    for lab, dat in dfsel.groupby('survived'):
        axs[j].hist(x=dat[i], label=lab, alpha=0.7, edgecolor='black', bins=20)
        axs[j].set_title(i)
        axs[j].legend(title='Survived')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1166936790923825, 'fraction_numerical': 0.009184224743381956, 'mean_word_length': 6.7306889352818375, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 38, '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': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '106415', 'license': 'MIT', 'n_tokens_mistral': 1377, 'n_tokens_neox': 1338, 'n_words': 322, 'path': 'past program/#03. Arboles de Decision/Notebooks/.ipynb_checkpoints/sesion03-checkpoint.ipynb', 'repo_name': 'Nica7/machine-learning-program', 'size': '3702'}