{"cells":[{"metadata":{},"cell_type":"markdown","source":"## 0. Imports"},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.style.use('ggplot')\nimport numpy as np\nimport os","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1. Lectura del conjunto de datos"},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\n\nX_train = pd.read_csv('../input/vsb-power-line-fault-detection/metadata_train.csv')\nX_test = pd.read_csv('../input/vsb-power-line-fault-detection/metadata_test.csv')\n\nX_train","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_test","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Visualización del conjunto de datos"},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Tamaño del conjunto de datos de entrenamiento: \", len(X_train))\nprint(\"Tamaño del conjunto de datos de pruebas: \", len(X_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nX_train['target'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train['target'].hist()\nplt.ylabel(\"# tweets\")\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Siempre conveniente realizar un análisis exploratorio de la distribución de los datos para determinar la mejor manera de resolver el problema"},{"metadata":{},"cell_type":"markdown","source":"### Número de palabras por Tweet"},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10,5))\n\n# Calculamos el número de palabras\ntweet_len_0 = X_train[X_train['target'] == 0]['phase']\ntweet_len_1 = X_train[X_train['target'] == 1]['phase']\n\nax1.hist(tweet_len_0, color='green')\nax1.set_title('datos que no son fallas')\n\nax2.hist(tweet_len_1, color='red')\nax2.set_title('datos que son fallas')\n\nfig.suptitle('numero de mediciones')\n\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4. Vectorización del conjunto de datos"},{"metadata":{"trusted":true},"cell_type":"code","source":"Y_train = X_train['target']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.feature_extraction.text import TfidfVectorizer","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 5. División del conjunto de datos"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nX_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.15)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Longitud subcojunto de entrenamiento: \", len(X_train))\nprint(\"Longitud subconjunto de validación: \", len(X_val))\nprint(\"Longitud subconjutno de pruebas: \", len(X_test))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 6. Construcción del modelo"},{"metadata":{"trusted":true},"cell_type":"code","source":"from tensorflow.keras import models\nfrom tensorflow.keras import layers\n\nmodel = models.Sequential()\n\nmodel.add(layers.Dense(16, activation='relu', input_shape=(X_train.shape[1],)))\nmodel.add(layers.Dropout(0.4))\nmodel.add(layers.Dense(16, activation='relu'))\nmodel.add(layers.Dropout(0.4))\nmodel.add(layers.Dense(1, activation='sigmoid'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(\n    optimizer='adam', \n    loss='binary_crossentropy',\n    metrics=['accuracy', 'Precision']\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit(\n    X_train,\n    Y_train,\n    epochs=8000,\n    batch_size=1024,\n    validation_data=(X_val, Y_val))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport matplotlib.pyplot as plt\n\npd.DataFrame(history.history)[['loss', 'val_loss']].plot(figsize=(10, 7))\nplt.grid(True)\nplt.gca().set_ylim(0, 1.2)\nplt.xlabel(\"epochs\")\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}