Skip to content

Instantly share code, notes, and snippets.

@tcvieira
Created August 6, 2019 15:01
Show Gist options
  • Save tcvieira/89743b108ca7391a17b5370de6142d39 to your computer and use it in GitHub Desktop.
Save tcvieira/89743b108ca7391a17b5370de6142d39 to your computer and use it in GitHub Desktop.
Ludwig Example
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Imports and Functions"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:21.314599Z",
"start_time": "2019-07-19T16:56:20.249496Z"
}
},
"outputs": [],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"import matplotlib.pyplot as plt\n",
"import logging\n",
"\n",
"import seaborn as sns\n",
"sns.set()\n",
"sns.set_style(\"whitegrid\")\n",
"flatui = [\"#9b59b6\",\"#3498db\",\"#95a5a6\",\"#e74c3c\",\"#34495e\",\"#2ecc71\"]\n",
"sns.set_palette(flatui) \n",
"sns.set(font_scale=1.5)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:21.320352Z",
"start_time": "2019-07-19T16:56:21.316633Z"
}
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:13:31.457779Z",
"start_time": "2019-07-19T17:13:31.451376Z"
}
},
"outputs": [],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import seaborn as sns\n",
"sns.set()\n",
"sns.set_style(\"whitegrid\")\n",
"flatui = [\"#9b59b6\",\"#3498db\",\"#95a5a6\",\"#e74c3c\",\"#34495e\",\"#2ecc71\"]\n",
"sns.set_palette(flatui) \n",
"sns.set(font_scale=1.5)\n",
"\n",
"def conf_matrix(y_test, preds, classes, normalize_conf_mat=False, figsize=(10,10)): \n",
" conf_mat = confusion_matrix(preds, y_test, labels=classes)\n",
" fig, ax = plt.subplots(figsize=figsize)\n",
" \n",
" # normalize by row\n",
" if normalize_conf_mat:\n",
" conf_mat = conf_mat.astype('float') / conf_mat.sum(axis=1)[:, np.newaxis] #normalização dos valores \n",
" df_cm = pd.DataFrame(conf_mat, index=classes, #cria um data frame para base ao gráfico\n",
" columns=classes) \n",
" sns.heatmap(df_cm, cmap='BuPu', annot=True, \n",
" xticklabels=classes, yticklabels=classes)\n",
" else: \n",
" sns.heatmap(conf_mat, annot=True, fmt='d', cmap=\"BuPu\",\n",
" xticklabels=classes, yticklabels=classes)\n",
" \n",
" plt.tight_layout()\n",
" plt.ylabel('Actual')\n",
" plt.xlabel('Predicted')\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:14:07.460644Z",
"start_time": "2019-07-19T17:14:07.089755Z"
}
},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from sklearn.metrics import classification_report\n",
"import scikitplot as skplt\n",
" \n",
"def show_roc(y_test, y_probas, name, figsize=(10,10)):\n",
" skplt.metrics.plot_roc(y_test, y_probas, plot_macro=False, plot_micro=False, figsize=figsize)\n",
" plt.tight_layout()\n",
" plt.title(name)\n",
" plt.show()\n",
" \n",
"def show_report(y_test, y_pred):\n",
" #print('roc_auc_score %s' % roc_auc_score(y_test, y_pred)) \n",
" #print('accuracy %s' % accuracy_score(y_pred, y_test))\n",
" print(classification_report(y_test, y_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:21.934611Z",
"start_time": "2019-07-19T16:56:21.331839Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"43749\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ID</th>\n",
" <th>TIPO_FINALIZACAO</th>\n",
" <th>label</th>\n",
" <th>descricao_clean</th>\n",
" <th>target</th>\n",
" <th>label_atrib</th>\n",
" <th>yake_keywords</th>\n",
" <th>NM_OCUPACAO_MANIFESTANTE</th>\n",
" <th>ocupacao_mp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>49951</td>\n",
" <td>Falta de atribuição</td>\n",
" <td>SAC</td>\n",
" <td>ola preciso informacao quanto procedimento dev...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>htm devo cartorio novembro preciso informacao</td>\n",
" <td>Outros</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>49970</td>\n",
" <td>Falta de atribuição</td>\n",
" <td>SAC</td>\n",
" <td>prezado ministerio publico peco desculpas caso...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>rebitte seeduc grau diario educacao diploma of...</td>\n",
" <td>Outros</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>49971</td>\n",
" <td>Atribuição da Ouvidoria</td>\n",
" <td>OUVIDORIA</td>\n",
" <td>bom duvida quanto ordem chamadas concurso mpu ...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>ampla concorrencia atencao pne proximo duvida ...</td>\n",
" <td>Outros</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>50005</td>\n",
" <td>Falta de atribuição</td>\n",
" <td>SAC</td>\n",
" <td>ola bom sou estudante curso direito cursando s...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>cadastro nacional presos liberdade criacao tem...</td>\n",
" <td>Outros</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>50012</td>\n",
" <td>Arquivamento sumário</td>\n",
" <td>OUVIDORIA</td>\n",
" <td>ola bom sou estudante curso direito cursando s...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>cadastro nacional presos tema informacoes acer...</td>\n",
" <td>Outros</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ID TIPO_FINALIZACAO label \\\n",
"0 49951 Falta de atribuição SAC \n",
"1 49970 Falta de atribuição SAC \n",
"2 49971 Atribuição da Ouvidoria OUVIDORIA \n",
"3 50005 Falta de atribuição SAC \n",
"4 50012 Arquivamento sumário OUVIDORIA \n",
"\n",
" descricao_clean target label_atrib \\\n",
"0 ola preciso informacao quanto procedimento dev... 1 0 \n",
"1 prezado ministerio publico peco desculpas caso... 1 0 \n",
"2 bom duvida quanto ordem chamadas concurso mpu ... 0 1 \n",
"3 ola bom sou estudante curso direito cursando s... 1 0 \n",
"4 ola bom sou estudante curso direito cursando s... 0 0 \n",
"\n",
" yake_keywords NM_OCUPACAO_MANIFESTANTE \\\n",
"0 htm devo cartorio novembro preciso informacao Outros \n",
"1 rebitte seeduc grau diario educacao diploma of... Outros \n",
"2 ampla concorrencia atencao pne proximo duvida ... Outros \n",
"3 cadastro nacional presos liberdade criacao tem... Outros \n",
"4 cadastro nacional presos tema informacoes acer... Outros \n",
"\n",
" ocupacao_mp \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_feats = pd.read_csv('../data/ouvidoria_feats_final.csv', low_memory=False)\n",
"print(len(df_feats))\n",
"display(df_feats.head())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:22.920847Z",
"start_time": "2019-07-19T16:56:22.781170Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_feats.groupby('label')['target'].count().plot.bar(ylim=0)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:25.781136Z",
"start_time": "2019-07-19T16:56:25.778690Z"
}
},
"outputs": [],
"source": [
"# df_feats['label'] = df_feats['label'].astype('category')\n",
"# df_feats['label_atrib'] = df_feats['label_atrib'].astype('category')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Split"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:26.255352Z",
"start_time": "2019-07-19T16:56:26.208461Z"
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(df_feats[['descricao_clean', 'label']], df_feats['label'],\n",
" test_size=0.2, stratify=df_feats['label'], random_state=42)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Model"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:30.064890Z",
"start_time": "2019-07-19T16:56:30.059972Z"
}
},
"outputs": [],
"source": [
"model_definition = {\n",
" 'input_features': [{\n",
" 'name': 'descricao_clean',\n",
" 'type': 'text'\n",
" }],\n",
" 'output_features': [{\n",
" 'name': 'label',\n",
" 'type': 'category'\n",
" }],\n",
" 'training': { \n",
" 'epochs': 1\n",
" }\n",
"# ,\n",
"# 'preprocessing': { \n",
"# 'category': {\n",
"# 'fill_value': 'SAC',\n",
"# }\n",
"# }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:33.825101Z",
"start_time": "2019-07-19T16:56:31.959701Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/thiagovieira/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n"
]
}
],
"source": [
"from ludwig.api import LudwigModel"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:34.782858Z",
"start_time": "2019-07-19T16:56:34.780156Z"
}
},
"outputs": [],
"source": [
"# train a model\n",
"model = LudwigModel(model_definition)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T16:56:35.159209Z",
"start_time": "2019-07-19T16:56:35.148619Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'input_features': [{'name': 'descricao_clean',\n",
" 'type': 'text',\n",
" 'tied_weights': None,\n",
" 'encoder': 'parallel_cnn',\n",
" 'level': 'word'}],\n",
" 'output_features': [{'name': 'label',\n",
" 'type': 'category',\n",
" 'loss': {'type': 'softmax_cross_entropy',\n",
" 'sampler': None,\n",
" 'negative_samples': 0,\n",
" 'distortion': 1,\n",
" 'unique': False,\n",
" 'labels_smoothing': 0,\n",
" 'class_weights': 1,\n",
" 'robust_lambda': 0,\n",
" 'confidence_penalty': 0,\n",
" 'class_similarities_temperature': 0,\n",
" 'weight': 1},\n",
" 'top_k': 3,\n",
" 'dependencies': [],\n",
" 'reduce_input': 'sum',\n",
" 'reduce_dependencies': 'sum'}],\n",
" 'training': {'epochs': 1,\n",
" 'optimizer': {'type': 'adam',\n",
" 'beta1': 0.9,\n",
" 'beta2': 0.999,\n",
" 'epsilon': 1e-08},\n",
" 'regularizer': 'l2',\n",
" 'regularization_lambda': 0,\n",
" 'learning_rate': 0.001,\n",
" 'batch_size': 128,\n",
" 'eval_batch_size': 0,\n",
" 'dropout_rate': 0.0,\n",
" 'early_stop': 5,\n",
" 'reduce_learning_rate_on_plateau': 0,\n",
" 'reduce_learning_rate_on_plateau_patience': 5,\n",
" 'reduce_learning_rate_on_plateau_rate': 0.5,\n",
" 'increase_batch_size_on_plateau': 0,\n",
" 'increase_batch_size_on_plateau_patience': 5,\n",
" 'increase_batch_size_on_plateau_rate': 2,\n",
" 'increase_batch_size_on_plateau_max': 512,\n",
" 'decay': False,\n",
" 'decay_steps': 10000,\n",
" 'decay_rate': 0.96,\n",
" 'staircase': False,\n",
" 'gradient_clipping': None,\n",
" 'validation_field': 'combined',\n",
" 'validation_measure': 'loss',\n",
" 'bucketing_field': None,\n",
" 'learning_rate_warmup_epochs': 5},\n",
" 'preprocessing': {'force_split': False,\n",
" 'split_probabilities': (0.7, 0.1, 0.2),\n",
" 'stratify': None,\n",
" 'text': {'char_format': 'characters',\n",
" 'char_sequence_length_limit': 1024,\n",
" 'char_most_common': 70,\n",
" 'word_format': 'space_punct',\n",
" 'word_sequence_length_limit': 256,\n",
" 'word_most_common': 20000,\n",
" 'padding_symbol': '<PAD>',\n",
" 'unknown_symbol': '<UNK>',\n",
" 'padding': 'right',\n",
" 'lowercase': True,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': ''},\n",
" 'category': {'most_common': 10000,\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': '<UNK>'},\n",
" 'set': {'format': 'space',\n",
" 'most_common': 10000,\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': ''},\n",
" 'bag': {'format': 'space',\n",
" 'most_common': 10000,\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': ''},\n",
" 'binary': {'missing_value_strategy': 'fill_with_const', 'fill_value': 0},\n",
" 'numerical': {'missing_value_strategy': 'fill_with_const', 'fill_value': 0},\n",
" 'sequence': {'sequence_length_limit': 256,\n",
" 'most_common': 20000,\n",
" 'padding_symbol': '<PAD>',\n",
" 'unknown_symbol': '<UNK>',\n",
" 'padding': 'right',\n",
" 'format': 'space',\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': ''},\n",
" 'timeseries': {'timeseries_length_limit': 256,\n",
" 'padding_value': 0,\n",
" 'padding': 'right',\n",
" 'format': 'space',\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'fill_value': ''},\n",
" 'image': {'missing_value_strategy': 'backfill',\n",
" 'in_memory': True,\n",
" 'resize_method': 'crop_or_pad'}},\n",
" 'combiner': {'type': 'concat'}}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.model_definition"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:10:29.523490Z",
"start_time": "2019-07-19T16:56:59.310679Z"
},
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:root:Experiment name: api_experiment\n",
"INFO:root:Model name: run\n",
"INFO:root:Output path: results/api_experiment_run_1\n",
"INFO:root:\n",
"\n",
"INFO:root:ludwig_version: '0.1.2'\n",
"INFO:root:command: ('/Users/thiagovieira/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py '\n",
" '-f '\n",
" '/Users/thiagovieira/Library/Jupyter/runtime/kernel-24d1c02f-716e-4743-ba1d-3327119bfb84.json')\n",
"INFO:root:commit_hash: '0cd418d44f08'\n",
"INFO:root:random_seed: 42\n",
"INFO:root:model_definition: { 'combiner': {'type': 'concat'},\n",
" 'input_features': [ { 'encoder': 'parallel_cnn',\n",
" 'level': 'word',\n",
" 'name': 'descricao_clean',\n",
" 'tied_weights': None,\n",
" 'type': 'text'}],\n",
" 'output_features': [ { 'dependencies': [],\n",
" 'loss': { 'class_similarities_temperature': 0,\n",
" 'class_weights': 1,\n",
" 'confidence_penalty': 0,\n",
" 'distortion': 1,\n",
" 'labels_smoothing': 0,\n",
" 'negative_samples': 0,\n",
" 'robust_lambda': 0,\n",
" 'sampler': None,\n",
" 'type': 'softmax_cross_entropy',\n",
" 'unique': False,\n",
" 'weight': 1},\n",
" 'name': 'label',\n",
" 'reduce_dependencies': 'sum',\n",
" 'reduce_input': 'sum',\n",
" 'top_k': 3,\n",
" 'type': 'category'}],\n",
" 'preprocessing': { 'bag': { 'fill_value': '',\n",
" 'format': 'space',\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'most_common': 10000},\n",
" 'binary': { 'fill_value': 0,\n",
" 'missing_value_strategy': 'fill_with_const'},\n",
" 'category': { 'fill_value': '<UNK>',\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'most_common': 10000},\n",
" 'force_split': False,\n",
" 'image': { 'in_memory': True,\n",
" 'missing_value_strategy': 'backfill',\n",
" 'resize_method': 'crop_or_pad'},\n",
" 'numerical': { 'fill_value': 0,\n",
" 'missing_value_strategy': 'fill_with_const'},\n",
" 'sequence': { 'fill_value': '',\n",
" 'format': 'space',\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'most_common': 20000,\n",
" 'padding': 'right',\n",
" 'padding_symbol': '<PAD>',\n",
" 'sequence_length_limit': 256,\n",
" 'unknown_symbol': '<UNK>'},\n",
" 'set': { 'fill_value': '',\n",
" 'format': 'space',\n",
" 'lowercase': False,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'most_common': 10000},\n",
" 'split_probabilities': (0.7, 0.1, 0.2),\n",
" 'stratify': None,\n",
" 'text': { 'char_format': 'characters',\n",
" 'char_most_common': 70,\n",
" 'char_sequence_length_limit': 1024,\n",
" 'fill_value': '',\n",
" 'lowercase': True,\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'padding': 'right',\n",
" 'padding_symbol': '<PAD>',\n",
" 'unknown_symbol': '<UNK>',\n",
" 'word_format': 'space_punct',\n",
" 'word_most_common': 20000,\n",
" 'word_sequence_length_limit': 256},\n",
" 'timeseries': { 'fill_value': '',\n",
" 'format': 'space',\n",
" 'missing_value_strategy': 'fill_with_const',\n",
" 'padding': 'right',\n",
" 'padding_value': 0,\n",
" 'timeseries_length_limit': 256}},\n",
" 'training': { 'batch_size': 128,\n",
" 'bucketing_field': None,\n",
" 'decay': False,\n",
" 'decay_rate': 0.96,\n",
" 'decay_steps': 10000,\n",
" 'dropout_rate': 0.0,\n",
" 'early_stop': 5,\n",
" 'epochs': 1,\n",
" 'eval_batch_size': 0,\n",
" 'gradient_clipping': None,\n",
" 'increase_batch_size_on_plateau': 0,\n",
" 'increase_batch_size_on_plateau_max': 512,\n",
" 'increase_batch_size_on_plateau_patience': 5,\n",
" 'increase_batch_size_on_plateau_rate': 2,\n",
" 'learning_rate': 0.001,\n",
" 'learning_rate_warmup_epochs': 5,\n",
" 'optimizer': { 'beta1': 0.9,\n",
" 'beta2': 0.999,\n",
" 'epsilon': 1e-08,\n",
" 'type': 'adam'},\n",
" 'reduce_learning_rate_on_plateau': 0,\n",
" 'reduce_learning_rate_on_plateau_patience': 5,\n",
" 'reduce_learning_rate_on_plateau_rate': 0.5,\n",
" 'regularization_lambda': 0,\n",
" 'regularizer': 'l2',\n",
" 'staircase': False,\n",
" 'validation_field': 'combined',\n",
" 'validation_measure': 'loss'}}\n",
"INFO:root:\n",
"\n",
"INFO:root:Using full dataframe\n",
"INFO:root:Building dataset (it may take a while)\n",
"INFO:root:Training set: 24602\n",
"INFO:root:Validation set: 3434\n",
"INFO:root:Test set: 6963\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/losses/losses_impl.py:209: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/losses/losses_impl.py:209: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_grad.py:102: div (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Deprecated in favor of operator or tf.math.divide.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_grad.py:102: div (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Deprecated in favor of operator or tf.math.divide.\n",
"INFO:root:\n",
"INFO:root:╒══════════╕\n",
"INFO:root:│ TRAINING │\n",
"INFO:root:╘══════════╛\n",
"INFO:root:\n",
"INFO:root:\n",
"Epoch 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training: 100%|██████████| 193/193 [09:32<00:00, 2.24s/it]\n",
"Evaluation train: 100%|██████████| 193/193 [02:36<00:00, 1.59it/s]\n",
"Evaluation vali : 100%|██████████| 27/27 [00:21<00:00, 1.29it/s]\n",
"Evaluation test : 100%|██████████| 55/55 [00:44<00:00, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:root:Took 13m 15.4092s\n",
"INFO:root:╒═════════╤════════╤════════════╤═════════════╕\n",
"│ label │ loss │ accuracy │ hits_at_k │\n",
"╞═════════╪════════╪════════════╪═════════════╡\n",
"│ train │ 0.1708 │ 0.9341 │ 1.0000 │\n",
"├─────────┼────────┼────────────┼─────────────┤\n",
"│ vali │ 0.3286 │ 0.8623 │ 1.0000 │\n",
"├─────────┼────────┼────────────┼─────────────┤\n",
"│ test │ 0.3322 │ 0.8581 │ 1.0000 │\n",
"╘═════════╧════════╧════════════╧═════════════╛\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:root:Validation loss on combined improved, model saved\n",
"INFO:root:\n",
"INFO:root:Best validation model epoch:\n",
"INFO:root:Best validation model loss on validation set combined: 0.32862120779989484\n",
"INFO:root:Best validation model loss on test set combined: 0.33219181626722694\n",
"INFO:root:\n",
"Finished: api_experiment_run\n",
"INFO:root:Saved to: results/api_experiment_run_1\n"
]
}
],
"source": [
"train_stats = model.train(X_train, logging_level=logging.INFO)\n",
"# save and load a model\n",
"#LudwigModel.save('ludwig_model')\n",
"#model = LudwigModel.load(model_path)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:12:09.225892Z",
"start_time": "2019-07-19T17:11:09.470510Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use standard file APIs to check for files with this prefix.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/thiagovieira/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use standard file APIs to check for files with this prefix.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Restoring parameters from results/api_experiment_run_1/model/model_weights_progress\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:tensorflow:Restoring parameters from results/api_experiment_run_1/model/model_weights_progress\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluation: 100%|██████████| 69/69 [00:56<00:00, 1.46it/s]\n"
]
}
],
"source": [
"# obtain predictions\n",
"predictions = model.predict(X_test, logging_level=logging.INFO)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:14:28.020596Z",
"start_time": "2019-07-19T17:14:28.010445Z"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label_predictions</th>\n",
" <th>label_probabilities_&lt;UNK&gt;</th>\n",
" <th>label_probabilities_SAC</th>\n",
" <th>label_probabilities_OUVIDORIA</th>\n",
" <th>label_probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>SAC</td>\n",
" <td>3.138596e-29</td>\n",
" <td>0.937511</td>\n",
" <td>0.062489</td>\n",
" <td>0.937511</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>SAC</td>\n",
" <td>6.551658e-16</td>\n",
" <td>0.947959</td>\n",
" <td>0.052041</td>\n",
" <td>0.947959</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>SAC</td>\n",
" <td>8.961570e-28</td>\n",
" <td>0.913988</td>\n",
" <td>0.086012</td>\n",
" <td>0.913988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>SAC</td>\n",
" <td>1.002333e-33</td>\n",
" <td>0.973154</td>\n",
" <td>0.026846</td>\n",
" <td>0.973154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>SAC</td>\n",
" <td>5.913845e-23</td>\n",
" <td>0.873283</td>\n",
" <td>0.126717</td>\n",
" <td>0.873283</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label_predictions label_probabilities_<UNK> label_probabilities_SAC \\\n",
"0 SAC 3.138596e-29 0.937511 \n",
"1 SAC 6.551658e-16 0.947959 \n",
"2 SAC 8.961570e-28 0.913988 \n",
"3 SAC 1.002333e-33 0.973154 \n",
"4 SAC 5.913845e-23 0.873283 \n",
"\n",
" label_probabilities_OUVIDORIA label_probability \n",
"0 0.062489 0.937511 \n",
"1 0.052041 0.947959 \n",
"2 0.086012 0.913988 \n",
"3 0.026846 0.973154 \n",
"4 0.126717 0.873283 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictions.head()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:19:27.193454Z",
"start_time": "2019-07-19T17:19:27.189762Z"
}
},
"outputs": [],
"source": [
"y_pred = predictions['label_predictions']\n",
"y_probas = predictions[['label_probabilities_OUVIDORIA', 'label_probabilities_SAC']]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:19:31.633584Z",
"start_time": "2019-07-19T17:19:31.420504Z"
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" OUVIDORIA 0.76 0.35 0.48 1617\n",
" SAC 0.87 0.97 0.92 7133\n",
"\n",
" accuracy 0.86 8750\n",
" macro avg 0.82 0.66 0.70 8750\n",
"weighted avg 0.85 0.86 0.84 8750\n",
"\n"
]
}
],
"source": [
"show_report(y_test, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:19:36.138421Z",
"start_time": "2019-07-19T17:19:35.770442Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAK1CAYAAADSVcZ8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3wU1f7G8c9uekgCBELoJXQC0jQCXhARuApSFKRKU4ogCDawgaiAP1RAQS+CRDpSpYkFpXiVJk0REARCCR3SG0l2d35/5LKwJoGASTblefvixc6Zc2a+y2B4Mjl7xmQYhoGIiIiISAFgdnYBIiIiIiLZReFWRERERAoMhVsRERERKTAUbkVERESkwFC4FREREZECQ+FWRERERAoMhVsRyXWvvvoqNWvW5OzZszl6nj59+tCqVat/dIzrtWaHXbt2UbNmzXS/6taty8MPP8zEiROJiYnJlnPdiRkzZjhcj79v3+1xbuenn37i2WefpUWLFtStW5dWrVrxzjvvcOXKFYd+1//cunXrRmarV/79Wt/NGBEpGFydXYCISF7WvXt3mjZtmq3HbNOmDW3atLFvp6SkcPDgQRYtWsSePXtYsWIFrq4F98tzamoq48ePZ+XKlTRo0IDevXtTtGhRDh8+zPLly/nhhx/48ssvKV++vMO433//naVLl9KzZ88sn+tuxohI/lZwv3qKiGSDhg0b0rBhw2w9Zs2aNenUqZND25NPPomPjw9z5szh+++/p3379tl6zrxk5syZrFy5klGjRjF06FCHfR07dqR///6MGDGC1atXpxs7depU2rZtS4kSJbJ8vrsZIyL5l6YliIjkEe3atQNg//79Tq4k51y9epXZs2dz//33pwu2APfeey9PPPEEf/75J7/99pvDvlatWhEbG8v//d//Zfl8dzNGRPI3hVsRybMymxOZUfv27dvp0aMHDRo0oHXr1qxYscJh/3PPPUdISAg2m83etmXLFmrWrMmECRMc+g4bNsweNDOacxsWFsbQoUO59957uf/++5kwYQLLly//x/OIzea0L8kWi8XedujQIUaMGEGzZs0IDg6madOmvPTSS1y8eNHeZ8aMGdSrV48ffviBBx54gIYNG9rff1bGZ0VMTAzvvvsuzZs3p27dujz66KPMnz8/0/msmfn+++9JTU2le/fu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PpyDBw/aV0G47noQq1mzJn5+fgD2oLt169bbBrWKFSuyaNEiJk+ezKxZs/Dw8KBz5864uLgQGhqarWuojh8/Hm9vbzZv3szatWspXbo0nTt3pk2bNvTs2dM+bzinxl9XrFgxli1bxvTp0/nuu+9YtmwZZcuWZdiwYQwePDhLIfRmHh4efPrpp6xbt45Vq1YRGhpKTEwMgYGB9OnTh2efffaWa93ezGQyMX78eLp06ZLl89/NGBHJP0zGnT5eRkSkEIuIiMDf3z/dHdp3332XL7/8kt9//x03NzcnVSciIppzKyJyB0aOHEn79u0dVmJISkpiy5Yt1KpVS8FWRMTJNC1BROQOdOrUiTfffJPBgwfz8MMPk5yczLp167h48SJvv/22s8sTESn0NC1BROQOrVu3jgULFhAWFobZbKZu3boMGzbMvvqCiIg4j8KtiIiIiBQYmnMrIiIiIgVGoZxza7FYiYpKdHYZkguKF/fWtS4kdK0LD13rwkPXuvAICPDNtmMVyju3rq4uzi5BcomudeGha1146FoXHrrWcjcKZbgVERERkYJJ4VZERERECgyFWxEREREpMBRuRURERKTAULgVERERkQJD4VZERERECgyFWxEREREpMBRuRURERKTAULgVERERkQJD4VZERERECgyFWxEREREpMBRuRURERKTAULgVERERkQJD4VZERERECgyFWxEREREpMBRuRURERKTAULgVERERkQJD4VZERERECgyFWxEREREpMBRuRURERKTAyFPhduzYsfTp0ydLfcPDwxk+fDghISGEhIQwevRoIiMjc7hCEREREcnLXJ1dwHUrVqxg+fLlhISE3LZvVFQU/fr1IyUlhYEDB2K1WgkNDeXo0aOsWLECd3f3XKhYRERERPIap4dbq9XKzJkz+eSTT7I8Zt68eVy8eJH169dTtWpVAOrXr8+AAQNYs2YN3bp1y6lyRURERCQPc+q0hOTkZB5//HFmzJhBp06dCAwMzNK4DRs2EBISYg+2AM2aNaNKlSps2LAhp8oVERERkTzO6eE2Pj6eadOmMXnyZFxdb38jOSYmhvDwcIKDg9PtCw4O5tChQzlRqoiIiIjkA06dluDj48PGjRuzFGqvu3TpEkCGd3kDAgKIi4sjLi4OX1/fbKtTREREJK9LTk4mLOyEs8sAIM6IJZlkjP/9Z8N20+82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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_roc(y_test, y_probas, 'Ludwig Parallel CNN')"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:19:59.352660Z",
"start_time": "2019-07-19T17:19:59.049235Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"conf_matrix(y_test, y_pred, ['OUVIDORIA', 'SAC'])"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2019-07-19T17:20:05.398528Z",
"start_time": "2019-07-19T17:20:05.380709Z"
}
},
"outputs": [],
"source": [
"model.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment