In [ ]:
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
from IPython.display import Image
El juego de adivina quién es, consiste en adivinar el personaje que tu oponente ha seleccionado antes de que él/ella adivine el tuyo. La dinámica del juego es:
A continuación, cargamos el tablero con los personajes.
In [ ]:
Image('data/guess_who_board.jpg', width=700)
Para la carga de datos usaremos la función read_csv
de pandas. Pandas cuenta con un amplio listado de funciones para la carga de datos. Mas informacion en la documentación de la API.
In [ ]:
df = pd.read_csv('data/guess_who.csv', index_col='observacion')
df.head()
In [ ]:
#Separamos los tipos de variables
categorical_var = 'color de cabello'
binary_vars = list(set(df.keys()) - set([categorical_var, 'NOMBRE']))
In [ ]:
# Para las variables booleanas calculamos la suma
df[binary_vars].sum()
In [ ]:
# Para las variables categoricas, observamos la frecuencia de cada categoría
df[categorical_var].value_counts()
In [ ]:
labels = df['NOMBRE']
del df['NOMBRE']
df.head()
In [ ]:
labels
In [ ]:
from sklearn.feature_extraction import DictVectorizer
vectorizer = DictVectorizer(sparse=False)
ab=vectorizer.fit_transform(df.to_dict('records'))
dft = pd.DataFrame(ab, columns=vectorizer.get_feature_names())
dft.head()
In [ ]:
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(criterion='entropy', splitter='random', random_state=42)
classifier.fit(dft, labels)
In [ ]:
classifier.feature_importances_
In [ ]:
feat = pd.DataFrame(index=dft.keys(), data=classifier.feature_importances_, columns=['score'])
feat = feat.sort_values(by='score', ascending=False)
In [ ]:
feat.plot(kind='bar',rot=85,figsize=(10,4),)
In [ ]:
In [ ]:
from sklearn.tree import export_graphviz
dotfile = open('guess_who_tree.dot', 'w')
export_graphviz(
classifier,
out_file = dotfile,
filled=True,
feature_names = dft.columns,
class_names=list(labels),
rotate=True,
max_depth=1,
rounded=True,
)
dotfile.close()
In [ ]:
!dot -Tpng guess_who_tree.dot -o guess_who_tree.png
In [ ]:
Image('guess_who_tree.png', width=1000)
In [ ]: