Skip to content

Instantly share code, notes, and snippets.

@ac00std
Created April 10, 2019 23:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ac00std/174af1a095566d894b2502815087eb62 to your computer and use it in GitHub Desktop.
Save ac00std/174af1a095566d894b2502815087eb62 to your computer and use it in GitHub Desktop.
earthquake.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "earthquake.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/ac00std/174af1a095566d894b2502815087eb62/earthquake.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"metadata": {
"id": "Qz1YzpN54DTN",
"colab_type": "code",
"outputId": "225ae407-c136-4a2a-f79f-3d1c30295603",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 340
}
},
"cell_type": "code",
"source": [
"\n",
"#to access kaggle datasets\n",
"!pip install kaggle\n",
"#Math operations\n",
"!pip install numpy==1.15.0\n",
"#Machine learning\n",
"!pip install catboost"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: kaggle in /usr/local/lib/python3.6/dist-packages (1.5.3)\n",
"Requirement already satisfied: urllib3<1.25,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.22)\n",
"Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.11.0)\n",
"Requirement already satisfied: certifi in /usr/local/lib/python3.6/dist-packages (from kaggle) (2019.3.9)\n",
"Requirement already satisfied: python-dateutil in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.5.3)\n",
"Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.18.4)\n",
"Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.28.1)\n",
"Requirement already satisfied: python-slugify in /usr/local/lib/python3.6/dist-packages (from kaggle) (3.0.2)\n",
"Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (3.0.4)\n",
"Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (2.6)\n",
"Requirement already satisfied: text-unidecode==1.2 in /usr/local/lib/python3.6/dist-packages (from python-slugify->kaggle) (1.2)\n",
"Requirement already satisfied: numpy==1.15.0 in /usr/local/lib/python3.6/dist-packages (1.15.0)\n",
"Requirement already satisfied: catboost in /usr/local/lib/python3.6/dist-packages (0.14.0)\n",
"Requirement already satisfied: pandas>=0.19.1 in /usr/local/lib/python3.6/dist-packages (from catboost) (0.22.0)\n",
"Requirement already satisfied: numpy>=1.11.1 in /usr/local/lib/python3.6/dist-packages (from catboost) (1.15.0)\n",
"Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from catboost) (1.11.0)\n",
"Requirement already satisfied: enum34 in /usr/local/lib/python3.6/dist-packages (from catboost) (1.1.6)\n",
"Requirement already satisfied: pytz>=2011k in /usr/local/lib/python3.6/dist-packages (from pandas>=0.19.1->catboost) (2018.9)\n",
"Requirement already satisfied: python-dateutil>=2 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.19.1->catboost) (2.5.3)\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "0kSBkhN64UZb",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#data preprocessing\n",
"import pandas as pd\n",
"#math operations\n",
"import numpy as np\n",
"#machine learning\n",
"from catboost import CatBoostRegressor, Pool\n",
"#data scaling\n",
"from sklearn.preprocessing import StandardScaler\n",
"#hyperparameter optimization\n",
"from sklearn.model_selection import GridSearchCV\n",
"#support vector machine model\n",
"from sklearn.svm import NuSVR, SVR\n",
"#kernel ridge model\n",
"from sklearn.kernel_ridge import KernelRidge\n",
"#data visualization\n",
"import matplotlib.pyplot as plt"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "4NRNwyFe4dt-",
"colab_type": "code",
"outputId": "c5caa2fc-8598-4a5b-f10a-32d572c7b261",
"colab": {
"resources": {
"http://localhost:8080/nbextensions/google.colab/files.js": {
"data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7Ci8vIE1heCBhbW91bnQgb2YgdGltZSB0byBibG9jayB3YWl0aW5nIGZvciB0aGUgdXNlci4KY29uc3QgRklMRV9DSEFOR0VfVElNRU9VVF9NUyA9IDMwICogMTAwMDsKCmZ1bmN0aW9uIF91cGxvYWRGaWxlcyhpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IHN0ZXBzID0gdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKTsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIC8vIENhY2hlIHN0ZXBzIG9uIHRoZSBvdXRwdXRFbGVtZW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBjYWxsCiAgLy8gdG8gdXBsb2FkRmlsZXNDb250aW51ZSBmcm9tIFB5dGhvbi4KICBvdXRwdXRFbGVtZW50LnN0ZXBzID0gc3RlcHM7CgogIHJldHVybiBfdXBsb2FkRmlsZXNDb250aW51ZShvdXRwdXRJZCk7Cn0KCi8vIFRoaXMgaXMgcm91Z2hseSBhbiBhc3luYyBnZW5lcmF0b3IgKG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIgeWV0KSwKLy8gd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzdGVwcyBhbmQgdGhlIFB5dGhvbiBzaWRlIGlzIGdvaW5nCi8vIHRvIHBvbGwgZm9yIGNvbXBsZXRpb24gb2YgZWFjaCBzdGVwLgovLyBUaGlzIHVzZXMgYSBQcm9taXNlIHRvIGJsb2NrIHRoZSBweXRob24gc2lkZSBvbiBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcCwKLy8gdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgc3RlcCBhcyB0aGUgaW5wdXQgdG8gdGhlIG5leHQgc3RlcC4KZnVuY3Rpb24gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpIHsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIGNvbnN0IHN0ZXBzID0gb3V0cHV0RWxlbWVudC5zdGVwczsKCiAgY29uc3QgbmV4dCA9IHN0ZXBzLm5leHQob3V0cHV0RWxlbWVudC5sYXN0UHJvbWlzZVZhbHVlKTsKICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5leHQudmFsdWUucHJvbWlzZSkudGhlbigodmFsdWUpID0+IHsKICAgIC8vIENhY2hlIHRoZSBsYXN0IHByb21pc2UgdmFsdWUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5leHQKICAgIC8vIHN0ZXAgb2YgdGhlIGdlbmVyYXRvci4KICAgIG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSA9IHZhbHVlOwogICAgcmV0dXJuIG5leHQudmFsdWUucmVzcG9uc2U7CiAgfSk7Cn0KCi8qKgogKiBHZW5lcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGJldHdlZW4gZWFjaCBhc3luYyBzdGVwIG9mIHRoZSB1cGxvYWQKICogcHJvY2Vzcy4KICogQHBhcmFtIHtzdHJpbmd9IGlucHV0SWQgRWxlbWVudCBJRCBvZiB0aGUgaW5wdXQgZmlsZSBwaWNrZXIgZWxlbWVudC4KICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIG91dHB1dCBkaXNwbGF5LgogKiBAcmV0dXJuIHshSXRlcmFibGU8IU9iamVjdD59IEl0ZXJhYmxlIG9mIG5leHQgc3RlcHMuCiAqLwpmdW5jdGlvbiogdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKSB7CiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CgogIGNvbnN0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRwdXRJZCk7CiAgb3V0cHV0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCiAgY29uc3QgcGlja2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgcmVzb2x2ZShlLnRhcmdldC5maWxlcyk7CiAgICB9KTsKICB9KTsKCiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FuY2VsKTsKICBjYW5jZWwudGV4dENvbnRlbnQgPSAnQ2FuY2VsIHVwbG9hZCc7CiAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBjYW5jZWwub25jbGljayA9ICgpID0+IHsKICAgICAgcmVzb2x2ZShudWxsKTsKICAgIH07CiAgfSk7CgogIC8vIENhbmNlbCB1cGxvYWQgaWYgdXNlciBoYXNuJ3QgcGlja2VkIGFueXRoaW5nIGluIHRpbWVvdXQuCiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9LCBGSUxFX0NIQU5HRV9USU1FT1VUX01TKTsKICB9KTsKCiAgLy8gV2FpdCBmb3IgdGhlIHVzZXIgdG8gcGljayB0aGUgZmlsZXMuCiAgY29uc3QgZmlsZXMgPSB5aWVsZCB7CiAgICBwcm9taXNlOiBQcm9taXNlLnJhY2UoW3BpY2tlZFByb21pc2UsIHRpbWVvdXRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSksCiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdzdGFydGluZycsCiAgICB9CiAgfTsKCiAgaWYgKCFmaWxlcykgewogICAgcmV0dXJuIHsKICAgICAgcmVzcG9uc2U6IHsKICAgICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICAgIH0KICAgIH07CiAgfQoKICBjYW5jZWwucmVtb3ZlKCk7CgogIC8vIERpc2FibGUgdGhlIGlucHV0IGVsZW1lbnQgc2luY2UgZnVydGhlciBwaWNrcyBhcmUgbm90IGFsbG93ZWQuCiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKCiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBsaS5hcHBlbmQoc3BhbihmaWxlLm5hbWUsIHtmb250V2VpZ2h0OiAnYm9sZCd9KSk7CiAgICBsaS5hcHBlbmQoc3BhbigKICAgICAgICBgKCR7ZmlsZS50eXBlIHx8ICduL2EnfSkgLSAke2ZpbGUuc2l6ZX0gYnl0ZXMsIGAgKwogICAgICAgIGBsYXN0IG1vZGlmaWVkOiAkewogICAgICAgICAgICBmaWxlLmxhc3RNb2RpZmllZERhdGUgPyBmaWxlLmxhc3RNb2RpZmllZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbi9hJ30gLSBgKSk7CiAgICBjb25zdCBwZXJjZW50ID0gc3BhbignMCUgZG9uZScpOwogICAgbGkuYXBwZW5kQ2hpbGQocGVyY2VudCk7CgogICAgb3V0cHV0RWxlbWVudC5hcHBlbmRDaGlsZChsaSk7CgogICAgY29uc3QgZmlsZURhdGFQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOwogICAgICB9OwogICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9KTsKICAgIC8vIFdhaXQgZm9yIHRoZSBkYXRhIHRvIGJlIHJlYWR5LgogICAgbGV0IGZpbGVEYXRhID0geWllbGQgewogICAgICBwcm9taXNlOiBmaWxlRGF0YVByb21pc2UsCiAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgYWN0aW9uOiAnY29udGludWUnLAogICAgICB9CiAgICB9OwoKICAgIC8vIFVzZSBhIGNodW5rZWQgc2VuZGluZyB0byBhdm9pZCBtZXNzYWdlIHNpemUgbGltaXRzLiBTZWUgYi82MjExNTY2MC4KICAgIGxldCBwb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAocG9zaXRpb24gPCBmaWxlRGF0YS5ieXRlTGVuZ3RoKSB7CiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGZpbGVEYXRhLmJ5dGVMZW5ndGggLSBwb3NpdGlvbiwgTUFYX1BBWUxPQURfU0laRSk7CiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoZmlsZURhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CgogICAgICBjb25zdCBiYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICAgICAgeWllbGQgewogICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICBhY3Rpb246ICdhcHBlbmQnLAogICAgICAgICAgZmlsZTogZmlsZS5uYW1lLAogICAgICAgICAgZGF0YTogYmFzZTY0LAogICAgICAgIH0sCiAgICAgIH07CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPQogICAgICAgICAgYCR7TWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCl9JSBkb25lYDsKICAgIH0KICB9CgogIC8vIEFsbCBkb25lLgogIHlpZWxkIHsKICAgIHJlc3BvbnNlOiB7CiAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgIH0KICB9Owp9CgpzY29wZS5nb29nbGUgPSBzY29wZS5nb29nbGUgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYiA9IHNjb3BlLmdvb2dsZS5jb2xhYiB8fCB7fTsKc2NvcGUuZ29vZ2xlLmNvbGFiLl9maWxlcyA9IHsKICBfdXBsb2FkRmlsZXMsCiAgX3VwbG9hZEZpbGVzQ29udGludWUsCn07Cn0pKHNlbGYpOwo=",
"ok": true,
"headers": [
[
"content-type",
"application/javascript"
]
],
"status": 200,
"status_text": ""
}
},
"base_uri": "https://localhost:8080/",
"height": 91
}
},
"cell_type": "code",
"source": [
"\n",
"# Colab's file access feature\n",
"from google.colab import files\n",
"\n",
"#retrieve uploaded file\n",
"uploaded = files.upload()\n",
"\n",
"#print results\n",
"for fn in uploaded.keys():\n",
" print('User uploaded file \"{name}\" with length {length} bytes'.format(\n",
" name=fn, length=len(uploaded[fn])))\n",
" \n",
"# Then move kaggle.json into the folder where the API expects to find it.\n",
"!mkdir -p ~/.kaggle/ && mv kaggle.json ~/.kaggle/ && chmod 600 ~/.kaggle/kaggle.json"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <input type=\"file\" id=\"files-9045102b-2b91-4831-ab2e-aa539909c0c5\" name=\"files[]\" multiple disabled />\n",
" <output id=\"result-9045102b-2b91-4831-ab2e-aa539909c0c5\">\n",
" Upload widget is only available when the cell has been executed in the\n",
" current browser session. Please rerun this cell to enable.\n",
" </output>\n",
" <script src=\"/nbextensions/google.colab/files.js\"></script> "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Saving kaggle.json to kaggle.json\n",
"User uploaded file \"kaggle.json\" with length 62 bytes\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "iIDT3C1E4jVL",
"colab_type": "code",
"outputId": "effd82dc-4c93-4698-e2d6-6fd501e94946",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 391
}
},
"cell_type": "code",
"source": [
"\n",
"#list competitions\n",
"!kaggle competitions list"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"ref deadline category reward teamCount userHasEntered \n",
"------------------------------------------------- ------------------- --------------- --------- --------- -------------- \n",
"digit-recognizer 2030-01-01 00:00:00 Getting Started Knowledge 2727 False \n",
"titanic 2030-01-01 00:00:00 Getting Started Knowledge 10976 True \n",
"house-prices-advanced-regression-techniques 2030-01-01 00:00:00 Getting Started Knowledge 4468 False \n",
"imagenet-object-localization-challenge 2029-12-31 07:00:00 Research Knowledge 37 False \n",
"competitive-data-science-predict-future-sales 2019-12-31 23:59:00 Playground Kudos 2714 False \n",
"two-sigma-financial-news 2019-07-15 23:59:00 Featured $100,000 2927 False \n",
"aerial-cactus-identification 2019-07-08 23:59:00 Playground Knowledge 288 False \n",
"jigsaw-unintended-bias-in-toxicity-classification 2019-06-26 23:59:00 Featured $65,000 619 False \n",
"inaturalist-2019-fgvc6 2019-06-10 23:59:00 Research Kudos 38 False \n",
"freesound-audio-tagging-2019 2019-06-10 11:59:00 Research $5,000 133 False \n",
"iwildcam-2019-fgvc6 2019-06-07 23:59:00 Playground Kudos 77 False \n",
"imet-2019-fgvc6 2019-06-04 23:59:00 Research Kudos 166 False \n",
"LANL-Earthquake-Prediction 2019-06-03 23:59:00 Research $50,000 2432 True \n",
"landmark-recognition-2019 2019-06-03 23:59:00 Research $25,000 22 False \n",
"landmark-retrieval-2019 2019-06-03 23:59:00 Research $25,000 22 False \n",
"tmdb-box-office-prediction 2019-05-30 23:59:00 Playground Knowledge 644 False \n",
"dont-overfit-ii 2019-05-07 23:59:00 Playground Swag 1583 False \n",
"ciphertext-challenge-ii 2019-04-25 23:59:00 Playground Swag 33 False \n",
"data-science-for-good-careervillage 2019-04-23 23:59:00 Analytics $15,000 0 False \n",
"gendered-pronoun-resolution 2019-04-22 23:59:00 Research $25,000 679 False \n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "r_4BDoPK6CZN",
"colab_type": "code",
"outputId": "b8a6bd8c-4cc0-460c-be0c-cf3b7e9c1be0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"cell_type": "code",
"source": [
"#download earthquake data, will take 30-60 seconds\n",
"!kaggle competitions download -c LANL-Earthquake-Prediction"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"sample_submission.csv: Skipping, found more recently modified local copy (use --force to force download)\n",
"test.zip: Skipping, found more recently modified local copy (use --force to force download)\n",
"train.csv.zip: Skipping, found more recently modified local copy (use --force to force download)\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "1o2C1-ED6KhE",
"colab_type": "code",
"outputId": "deb2d20c-b9d1-465e-86f4-5f9a2d31b32c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
}
},
"cell_type": "code",
"source": [
"#unzip training data for usage, will take about 5 minutes (its big)\n",
"!ls\n",
"!unzip train.csv.zip\n",
"!ls"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"sample_data sample_submission.csv test.zip train.csv train.csv.zip\n",
"Archive: train.csv.zip\n",
"replace train.csv? [y]es, [n]o, [A]ll, [N]one, [r]ename: n\n",
"sample_data sample_submission.csv test.zip train.csv train.csv.zip\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "0qGeAp99bGEY",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#Extract training data into a dataframe for further manipulation\n",
"train = pd.read_csv('train.csv', nrows=6000000, dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "etzwWur3-2Ys",
"colab_type": "code",
"outputId": "35c332c0-43a8-4323-fa84-579605bed9cc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
}
},
"cell_type": "code",
"source": [
"#print first 10 entries\n",
"train.head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"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>acoustic_data</th>\n",
" <th>time_to_failure</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>12</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>6</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>8</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>8</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>8</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>9</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>-5</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>3</td>\n",
" <td>1.4691</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" acoustic_data time_to_failure\n",
"0 12 1.4691\n",
"1 6 1.4691\n",
"2 8 1.4691\n",
"3 5 1.4691\n",
"4 8 1.4691\n",
"5 8 1.4691\n",
"6 9 1.4691\n",
"7 7 1.4691\n",
"8 -5 1.4691\n",
"9 3 1.4691"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"metadata": {
"id": "rNrlepGKAmz-",
"colab_type": "code",
"outputId": "0a15edfa-329d-4d11-b7bd-0a7da6dfbb56",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 499
}
},
"cell_type": "code",
"source": [
"#visualize 1% of samples data, first 100 datapoints\n",
"train_ad_sample_df = train['acoustic_data'].values[::100]\n",
"train_ttf_sample_df = train['time_to_failure'].values[::100]\n",
"\n",
"#function for plotting based on both features\n",
"def plot_acc_ttf_data(train_ad_sample_df, train_ttf_sample_df, title=\"Acoustic data and time to failure: 1% sampled data\"):\n",
" fig, ax1 = plt.subplots(figsize=(12, 8))\n",
" plt.title(title)\n",
" plt.plot(train_ad_sample_df, color='r')\n",
" ax1.set_ylabel('acoustic data', color='r')\n",
" plt.legend(['acoustic data'], loc=(0.01, 0.95))\n",
" ax2 = ax1.twinx()\n",
" plt.plot(train_ttf_sample_df, color='b')\n",
" ax2.set_ylabel('time to failure', color='b')\n",
" plt.legend(['time to failure'], loc=(0.01, 0.9))\n",
" plt.grid(True)\n",
"\n",
"plot_acc_ttf_data(train_ad_sample_df, train_ttf_sample_df)\n",
"del train_ad_sample_df\n",
"del train_ttf_sample_df"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nJUvo06cPv/zlLyvdZhERERGpO2plKI/x48ez1VZbhYGzzoKPPiruyvv0gZtuqjTJnDlz6NChA0uW\nLGGHHXbgrbfeYtWqVWy33Xa8/fbbdO/efXWaM844g06dOnHppZfyxhtvcM455/DRRx8xePBgWrdu\nzXnnnQeEgOD5559n9OjRvPzyy9x9990AzJ8/n7Zt29KtWzdGjRpFp06dAFYPf/PNNxxyyCGMGDGC\nTp06rV5v0plnnkmnTp245JJLeOGFF9h///2ZNWtWVvrktnTs2JHWrVuzcOHCSre5Y8eOWevJ+m5E\nREREGri0rQyVkp4QNFC33HILvXv3pm/fvnz11Vd89tlnjBw5kl133XV1s5vxRfm77767+q79Hnvs\nwezZs/nuu+8KLnubbbbh1Vdf5Q9/+APvvPMObdu2rTQvb7zxBocffvjqQCE3GAB4++23OeaYYwDY\nb7/9aN++faXbknabRURERKRule2LyVKr4k5+XRg+fDivvfYa7733Hi1btmTAgAE1am6zSZMmWS9X\ni5exxRZbMGbMGF588UUuuugi9txzTy655JKi5T8p7bYUa5tFREREpHr0hKABmj9/Pu3bt6dly5ZM\nmDCBkSNHAtC3b1/efvttJk2aBIQiNgD9+/fn4YfDy+uGDx9Op06dWHfddenWrRtjxowBYMyYMavn\nmzZtGi1btuSYY47h/PPPX52mTZs2LFiwoEJ+9thjDx5//HFmz56dtd6kXXfdlWHDhgHw0ksvMXfu\n3Eq3BaBp06asWLGiynQiIiIiUnf0hKAB2nfffbnzzjvZaqut2HLLLenbty8A6623HkOGDOHQQw9l\n1apVdO7cmVdffZXBgwdz0kkn0atXL1q2bMmDDz4IwC9+8QuGDh1Kjx492Gmnndhiiy0AGDduHOef\nfz6NGjWiadOm3HHHHQAMHDiQfffdlw022IA333xzdX569OjBH//4R3bbbTcaN27MtttuywMPPJCV\n50svvZSjjjqKHj160K9fPzbeeONKtyVeX69evdhuu+247777CqYTERERkbqjSsV5qOJqw6XvRkRE\nRNYkqlQsIiIiIiINmgICEREREakTixZBmRZGWaOoDoGIiIjUj0mTYJNN4Jln4KCDSp0bqWN/+Qtc\neCE0bQrrrw+dOkGXLqFbb70wbr31oHNn+MEPMv2NG5c65+VHAUEB7o6ZlTobklCu9V1ERNYao0aF\nz7/9TQFBGfjyy/B59tnwzTehmzkTxo6F2bNh2bL883XsmAkcOnWCDTYIn8nAIQ4mWjXokvlrDgUE\nebRo0YLZs2fTsWNHBQUNhLsze/ZsWrRoUeqsiIiISEpdusDVV1ccv2oVfPddCBJmzYLp08PnzJkw\nY0bonzEDPvoI/vnPkDafli0LP3Ho1CkzrksXaN9eTx8KUUCQR9euXZk6dSqzZs0qdVYkoUWLFnTt\n2rXU2RAREZFaatQI2rUL3ZZbVp1+yZLwVGHaNPj228wTh2QwMWkSjBwZpn//fcVl7LorvPVW8bdl\nbaCAII+mTZvSvXv3UmdDRERERIB11oGuXUNXlVWrQlAwa1Z24LDeenWfzzWVAgIRERERWWs0ahSK\nDXXuDD16lDo3awYFBHmsWLGCqVOnsnTp0lJnRQqIiw81bdq01FkRERERWaMpIMhj6tSptGnThm7d\nuqlScQMUVzCeOnWqinaJiIiI1JJeTJbH0qVL1cJQA2ZmdOzYUU9wRERERIpAAUEBCgYaNn0/IiIi\nIsWhgEBEREREpIwpIGiA5s2bx+233756eNq0aRx22GFFX8/w4cMZMWJEteZZtmwZe+21F3369OGx\nxx4rmO6SSy7htddeA2DAgAGMit9OKSIiIiINiioVN0BxQHD66acDsMEGG/DEE08UfT3Dhw+ndevW\n9OvXL/U8H374IQAfffRRpekuv/zyGudr5cqVNGmiQ1NERESkPugJQQM0aNAgJk6cSJ8+fTj//POZ\nPHkyPXv2BOCBBx7g4IMPZu+996Zbt2789a9/5YYbbmDbbbelb9++zJkzB4CJEyey77778uMf/5j+\n/fszYcKErHVMnjyZO++8kxtvvJE+ffrwzjvvMHnyZPbYYw969erFnnvuyZQpU7LmmTlzJscccwwf\nfPABffr0YeLEiVx++eXssMMO9OzZk4EDB+LuAJxwwgl5g5jWrVuv7n/iiSc44YQTVqc/7bTT2Gmn\nnfj973/PokWLOOmkk9hxxx3ZdtttefbZZ4u2f0VEpETi18fWwU0uEam5kt6GNbP7gP2Bme7eMxrX\nAXgM6AZMBo5w97kWapHeDPwcWAyc4O5jonmOBy6KFvsnd3+wWHk86yyo4mZ4tfXpAzfdVHj6VVdd\nxSeffLL6LvzkyZOzpn/yySd8+OGHLF26lM0224yrr76aDz/8kLPPPpuhQ4dy1llnMXDgQO688042\n33xz3n//fU4//XTeeOON1cvo1q0bp512Gq1bt+a8884D4IADDuD444/n+OOP57777uPMM8/kmWee\nWT1P586dueeee7juuut4/vnnAfjtb3/LJZdcAsCxxx7L888/zwEHHFCj/TJ16lRGjBhB48aNufDC\nC9ljjz247777mDdvHjvuuCN77bUXrVq1qtGyRUSkAVi0qNQ5EJE8Sv2E4AFg35xxg4DX3X1z4PVo\nGOBnwOZRNxC4A1YHEJcCOwE7ApeaWfs6z3kJ7b777rRp04b11luPtm3brr4A32abbZg8eTILFy5k\nxIgRHH744fTp04dTTz2V6dOnV7nc9957j6OPPhoIF/fvvvtulfO8+eab7LTTTmyzzTa88cYbfPrp\npzXersMPP5zGjRsD8Morr3DVVVfRp08fBgwYwNKlSys8sRARERGR2ivpEwJ3f9vMuuWMPggYEPU/\nCAwH/hCNH+qhTMpIM2tnZutHaV919zkAZvYqIch4pBh5rOxOfqk0b958dX+jRo1WDzdq1IiVK1ey\natUq2rVrV2U5/9paunQpp59+OqNGjWKjjTZi8ODBVb4bINlcaG7a5N1/d+fJJ59kyy23LG6mRURE\nRCRLqZ8Q5NPF3ePb2TOALlH/hsBXiXRTo3GFxq+x2rRpw4IFC2o8/7rrrkv37t15/PHHgXBxPXbs\n2CrX069fPx599FEAHn74Yfr371/peuIL+k6dOrFw4cJUFZ+7dOnC+PHjWbVqFU8//XTBdPvssw+3\n3nrr6joJcWVmERERESmuhhgQrBY9DfBiLc/MBprZKDMbtXLlymIttug6duzILrvsQs+ePTn//PNr\ntIyHH36Ye++9l969e9OjR4+8lXIPOOAAnn766dWVim+99Vbuv/9+evXqxUMPPcTNN99c6TratWvH\nr371K3r27Mk+++zDDjvsUGW+rrrqKvbff3/69evH+uuvXzDdxRdfzIoVK+jVqxc9evTg4osvrnqj\nRURERKTaLL4DW7IMhCJDzycqFf8XGODu06MiQcPdfUszuyvqfySZLu7c/dRofFa6Qlq1auWLClRu\nGj9+PFtttVURtk7qkr4nEZE1zL33wimnhP4SX39I3TvtNHjmGZgxo9Q5KS0zW+zuDbpVlIb4hOA5\n4Pio/3jg2cT44yzoC8yPihb9E/ipmbWPKhP/NBonIiIiIiJVKHWzo48Q7vB3MrOphNaCrgL+bmYn\nA18CR0TJXyQ0Ofo5odnREwHcfY6ZXQF8EKW7PK5gLCIiIiIilSt1K0NHFZi0Z560DvymwHLuA+4r\nYtZw96wWcaRhKXVRNxEREZG1RUMsMlRyLVq0YPbs2brobKDcndmzZ9OiRYtSZ0VERERkjVfSJwQN\nVdeuXZk6dSqzZs0qdVakgBYtWtC1a9dSZ0NERERkjaeAII+mTZvSvXv3UmdDRERERKTOqciQiIiI\niEgZU0AgIiIi9UN180QaJAUEIiIiIiJlTAGBiIiIiEgZU0AgIiIiIlLGFBCIiIiIiJQxBQQiIiIi\nImVMAYGIiIiISBlTQCAiIiIiUsYUEIiIiIiIlDEFBCIiIiIiZUwBgYiIiIhIGVNAICIiIiJSxhQQ\niIiIiIiUMQUEIiIiIiJlTAGBiIiIiEgZU0AgIiIiIlLGFBCIiIiIiJQxBQQiIiIiImVMAYGIiIiI\nSBlTQCAiIiIiUsYUEIiIiIiIlDEFBCIiIiIiZUwBgYiIiIhIGVNAICIiIiJSQmZ2n5nNNLNPEuM6\nmNmrZvZZ9Nm+rtavgEBEREREpLQeAPbNGTcIeN3dNwdej4brhAICEREREZEScve3gTk5ow8CHoz6\nHwQOrqv1N6mrBTd0HTp0YPjw4aXOhoiISPlo1w6uuy706z94rTdt2hYsX96J4cNHlDorpdbEzEYl\nhoe4+5AU83Vx9+lR/wygS/GzFpRtQDBnzhwGDBhQ6myIiIiUj7vvhvPOC/3upc2L1LlHH4VmzdD1\nFqx09+1rswB3dzOrs5NGRYZERERERBqeb8xsfYDoc2ZdrUgBgYiIiIhIw/MccHzUfzzwbF2tSAGB\niIiIiEgJmdkjwHvAlmY21cxOBq4C9jazz4C9ouE6UbZ1CEREREREGgJ3P6rApD3rY/16QiAiIiIi\nUsYUEIiIiIiIlDEFBCIiIiIiZUwBgYiIiIhIGVNAICIiIiJSxhQQiIiIiIiUMQUEIiIiIiJlTAGB\niIiI1A+zUudARPJQQCAiIiIiUsYUEIiIiIiIlDEFBCIiIiIiZUwBgYiIiIhIGVNAICIiIiJSxhQQ\niIiIiIiUMQUEIiIiIiJlTAGBiIiIiEgZU0AgIiIiIlLGFBCIiIiIiJSxBhsQmNlkMxtnZh+Z2aho\nXAcze9XMPos+20fjzcxuMbPPzexjM9uutLkXEREREVkzNNiAILK7u/dx9+2j4UHA6+6+OfB6NAzw\nM2DzqBsI3FHvORURERERWQM19IAg10HAg1H/g8DBifFDPRgJtDOz9UuRQRERERGRNUlDDggceMXM\nRpvZwGhcF3efHvXPALpE/RsCXyXmnRqNExERkYbCvdQ5EJE8mpQ6A5X4ibt/bWadgVfNbEJyoru7\nmVXrlyUKLAYCNGvWrHg5FRERERFZQzXYJwTu/nX0ORN4GtgR+CYuChR9zoySfw1slJi9azQud5lD\n3H17d9++SZOGHAuJiIiIiNSPBhkQmFkrM2sT9wM/BT4BngOOj5IdDzwb9T8HHBe1NtQXmJ8oWiQi\nIiINwZIlpc6BiOTRUG+TdwGeNjMIeRzm7i+b2QfA383sZOBL4Igo/YvAz4HPgcXAifWfZREREanU\nbbeVOgcikkeDDAjc/Qugd57xs4E984x34Df1kDURERGpqRUrSp0DEcmjQRYZEhERERGR+qGAQERE\nRESkjCkgEBEREREpYwoIRERERETKmAICEREREZEypoBARERERKSMKSAQERERESljCghERERERMqY\nAgIRERGpH+6lzoGI5KGAQERERESkjCkgEBERkfphVuociEgeCghERERERMqYAgIRERERkTKmgEBE\nREREpIwpIBARERERKWMKCERERKR+qNlRkQZJAYGIiIiISBlTQCAiIiL1Q82OijRICghERERERMqY\nAgIRERERkTKmgEBEREREpIwpIBAREZH6oVaGRBokBQQiIiIiImVMAYGIiIiISBlTQCAiIiIiUsYU\nEIiIiIiIlDEFBCIiIiIiZUwBgYiIiIhIGVNAICIiIiJSxhQQiIiIiIiUMQUEIiIiIiJlTAGBiIiI\niEgZU0AgIiIiIlJCZna2mX1qZp+Y2SNm1qI+16+AQEREROqHe6lzINLgmNmGwJnA9u7eE2gMHFmf\neVBAICIiIvXjyy9LnQORhqoJsI6ZNQFaAtPqc+UKCERERERESsTdvwauA6YA04H57v5KfeahSX2u\nrCHp0KEDw4cPL3U2REREysd112X69R+81ps2bQuWL+/E8OEjSp2VUmtiZqMSw0PcfUg8YGbtgYOA\n7sA84HEzO8bd/1ZfGTQv0/J8rVq18kWLFpU6GyIiIuXDLNNfptcf5eS00+CZZ2DGjFLnpLTMbLG7\nt6pk+uHAvu5+cjR8HNDX3U+vrzyqyJCIVKQ/aim2iRPhzDNh1apS50REpKGZAvQ1s5ZmZsCewPj6\n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\nXWoP16Q2cV1qD9ekNnFdag/XZGI1nVYAAAAAzCwCAQAAAFBgBILq25R3BZCJ61J7uCa1ietSe7gm\ntYnrUnu4JhNgDAEAAABQYLQQAAAAAAVGIKgiM7vFzF4xsz4zuyvv+sw1ZvYdMxsws52psg4z22pm\n++Lt4lhuZvaNlzp2AgAABOtJREFUeC1eMrP3pP7m9nj8PjO7PVX+XjN7Of7NN8zMqvsKZx8zu8rM\nHjWz3Wa2y8zuiOVclxyZWbOZPWtmL8br8j9j+Wozeya+l98zs8ZY3hTv98XHV6XOdXcsf8XMPpoq\n5/PuMphZnZm9YGYPx/tck5yZ2RvxM2aHmW2LZXyG5cjM2s3sQTPba2Z7zOwDXJMr5O5sVdgk1Ul6\nTdIaSY2SXpS0Pu96zaVN0o2S3iNpZ6rsf0u6K+7fJekrcf/jkn4kySS9X9IzsbxD0v54uzjuL46P\nPRuPtfi3H8v7Ndf6JqlH0nvifqukVyWt57rkfl1M0sK43yDpmfgePiDptlj+bUl/HPe/IOnbcf82\nSd+L++vjZ1mTpNXxM66Oz7srujZ/JukfJT0c73NN8r8mb0jqKivjMyzfa3KfpD+M+42S2rkmV7bR\nQlA975PU5+773X1Y0v2Sbs25TnOKuz8u6XhZ8a0KHxyKt59MlX/Xg6cltZtZj6SPStrq7sfd/YSk\nrZJuiY+1ufvTHj4tvps6Fybg7v3uvj3un5G0R9IKcV1yFd/fwXi3IW4u6WZJD8by8uuSXK8HJX0o\n/mJ2q6T73X3I3V+X1KfwWcfn3WUws5WSfk3SPfG+iWtSq/gMy4mZLVL4AfBeSXL3YXc/Ka7JFSEQ\nVM8KST9P3T8QyzCzut29P+4fktQd9ye6HpOVH8goxxTFLg3vVvg1muuSs9g1ZYekAYV/CF+TdNLd\nk1U80+/lL97/+PgpSZ269OuFyX1d0p2SRuP9TnFNaoFL+rGZPW9mG2IZn2H5WS3piKS/i93r7jGz\nFnFNrgiBAIURkz7TauXAzBZK+r6kL7r76fRjXJd8uPtFd3+XpJUKvx6/M+cqFZqZfULSgLs/n3dd\nMM4H3f09kj4m6U/M7Mb0g3yGVV29Qvfgb7n7uyWdVegi9Atck0tHIKietyRdlbq/MpZhZh2OzX+K\ntwOxfKLrMVn5yoxyVGBmDQph4B/c/Z9iMdelRsSm9kclfUChKb0+PpR+L3/x/sfHF0k6pku/XpjY\nr0j6DTN7Q6E7z82S/lpck9y5+1vxdkDSDxQCNJ9h+Tkg6YC7PxPvP6gQELgmV4BAUD3PSVobZ4xo\nVBgEtjnnOhXBZknJzAG3S3ooVf7ZOPvA+yWdik2NWyT9qpktjjMU/KqkLfGx02b2/thP97Opc2EC\n8b26V9Ied/+r1ENclxyZ2RIza4/78yV9RGF8x6OSPh0PK78uyfX6tKSfxl/gNku6zcKMN6slrVUY\njMfn3SVy97vdfaW7r1J4v37q7v9ZXJNcmVmLmbUm+wqfPTvFZ1hu3P2QpJ+b2TWx6EOSdotrcmVm\narQy2/hNYaT7qwp9dTfmXZ+5tkn6v5L6JV1Q+AXhcwp9an8iaZ+kRyR1xGNN0jfjtXhZ0g2p8/yB\nwkC8Pkm/nyq/QeEfgtck/Y3iwn5sk16TDyo0274kaUfcPs51yf26/LKkF+J12Snpf8TyNQpfHvsk\n/T9JTbG8Od7vi4+vSZ1rY3zvX1FqJg4+767o+tyk0ixDXJN8r8UahRmZXpS0K3nf+AzL/bq8S9K2\n+Bn2Q4VZgrgmV7CxUjEAAABQYHQZAgAAAAqMQAAAAAAUGIEAAAAAKDACAQAAAFBgBAIAAACgwAgE\nAAAAQIERCAAAAIACIxAAAAAABfb/AXbs0SzxqLcnAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 864x576 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "-VOmo-qUBZjS",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Step 4 - Feature Engineering and signifiance of these statistical features\n",
"\n",
"#lets create a function to generate some statistical features based on the training data\n",
"def gen_features(X):\n",
" strain = []\n",
" strain.append(X.mean())\n",
" strain.append(X.std())\n",
" strain.append(X.min())\n",
" strain.append(X.max())\n",
" strain.append(X.kurtosis())\n",
" strain.append(X.skew())\n",
" strain.append(np.percentile(X,0.01))\n",
" strain.append(np.percentile(X,0.05))\n",
" strain.append(np.percentile(X,0.95))\n",
" strain.append(np.percentile(X,0.99))\n",
" strain.append(np.abs(X).max())\n",
" strain.append(np.abs(X).mean())\n",
" strain.append(np.abs(X).std())\n",
" return pd.Series(strain)\n",
" \n",
" "
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "6Qtwol6_Dbhw",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"train = pd.read_csv('train.csv', iterator=True, chunksize=150_000, dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})\n",
"\n",
"X_train = pd.DataFrame()\n",
"y_train = pd.Series()\n",
"for df in train:\n",
" ch = gen_features(df['acoustic_data'])\n",
" X_train = X_train.append(ch, ignore_index=True)\n",
" y_train = y_train.append(pd.Series(df['time_to_failure'].values[-1]))"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "dxGtPSgyEFWh",
"colab_type": "code",
"outputId": "64cc4d0e-7bb5-4be4-f843-0a5576b050da",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 317
}
},
"cell_type": "code",
"source": [
"X_train.describe()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" <td>4195.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>4.519475</td>\n",
" <td>6.547788</td>\n",
" <td>-149.190942</td>\n",
" <td>163.522288</td>\n",
" <td>68.297997</td>\n",
" <td>0.125830</td>\n",
" <td>-101.116327</td>\n",
" <td>-63.469110</td>\n",
" <td>-11.688999</td>\n",
" <td>-11.318057</td>\n",
" <td>170.046246</td>\n",
" <td>5.547367</td>\n",
" <td>5.750165</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.256049</td>\n",
" <td>8.503939</td>\n",
" <td>265.087984</td>\n",
" <td>272.930331</td>\n",
" <td>70.532565</td>\n",
" <td>0.477901</td>\n",
" <td>188.944515</td>\n",
" <td>125.350579</td>\n",
" <td>15.070549</td>\n",
" <td>14.298914</td>\n",
" <td>296.887015</td>\n",
" <td>1.517038</td>\n",
" <td>8.339211</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>3.596313</td>\n",
" <td>2.802720</td>\n",
" <td>-5515.000000</td>\n",
" <td>23.000000</td>\n",
" <td>0.648602</td>\n",
" <td>-4.091826</td>\n",
" <td>-3453.001900</td>\n",
" <td>-2167.005000</td>\n",
" <td>-356.009500</td>\n",
" <td>-339.009900</td>\n",
" <td>23.000000</td>\n",
" <td>4.147707</td>\n",
" <td>2.589085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>4.349497</td>\n",
" <td>4.478637</td>\n",
" <td>-154.000000</td>\n",
" <td>92.000000</td>\n",
" <td>28.090227</td>\n",
" <td>-0.040779</td>\n",
" <td>-104.000100</td>\n",
" <td>-65.000500</td>\n",
" <td>-14.000000</td>\n",
" <td>-14.000000</td>\n",
" <td>94.000000</td>\n",
" <td>5.061843</td>\n",
" <td>3.862810</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>4.522147</td>\n",
" <td>5.618798</td>\n",
" <td>-111.000000</td>\n",
" <td>123.000000</td>\n",
" <td>45.816625</td>\n",
" <td>0.085620</td>\n",
" <td>-76.000000</td>\n",
" <td>-48.000000</td>\n",
" <td>-10.000000</td>\n",
" <td>-10.000000</td>\n",
" <td>127.000000</td>\n",
" <td>5.380853</td>\n",
" <td>4.781513</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>4.693350</td>\n",
" <td>6.880904</td>\n",
" <td>-79.000000</td>\n",
" <td>170.000000</td>\n",
" <td>78.664202</td>\n",
" <td>0.253930</td>\n",
" <td>-54.000100</td>\n",
" <td>-35.000000</td>\n",
" <td>-6.000000</td>\n",
" <td>-6.000000</td>\n",
" <td>175.000000</td>\n",
" <td>5.748553</td>\n",
" <td>5.887947</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>5.391993</td>\n",
" <td>153.703569</td>\n",
" <td>-15.000000</td>\n",
" <td>5444.000000</td>\n",
" <td>631.158927</td>\n",
" <td>4.219429</td>\n",
" <td>-10.000000</td>\n",
" <td>-6.000000</td>\n",
" <td>-2.000000</td>\n",
" <td>-2.000000</td>\n",
" <td>5515.000000</td>\n",
" <td>32.762073</td>\n",
" <td>150.432368</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 \\\n",
"count 4195.000000 4195.000000 4195.000000 4195.000000 4195.000000 \n",
"mean 4.519475 6.547788 -149.190942 163.522288 68.297997 \n",
"std 0.256049 8.503939 265.087984 272.930331 70.532565 \n",
"min 3.596313 2.802720 -5515.000000 23.000000 0.648602 \n",
"25% 4.349497 4.478637 -154.000000 92.000000 28.090227 \n",
"50% 4.522147 5.618798 -111.000000 123.000000 45.816625 \n",
"75% 4.693350 6.880904 -79.000000 170.000000 78.664202 \n",
"max 5.391993 153.703569 -15.000000 5444.000000 631.158927 \n",
"\n",
" 5 6 7 8 9 \\\n",
"count 4195.000000 4195.000000 4195.000000 4195.000000 4195.000000 \n",
"mean 0.125830 -101.116327 -63.469110 -11.688999 -11.318057 \n",
"std 0.477901 188.944515 125.350579 15.070549 14.298914 \n",
"min -4.091826 -3453.001900 -2167.005000 -356.009500 -339.009900 \n",
"25% -0.040779 -104.000100 -65.000500 -14.000000 -14.000000 \n",
"50% 0.085620 -76.000000 -48.000000 -10.000000 -10.000000 \n",
"75% 0.253930 -54.000100 -35.000000 -6.000000 -6.000000 \n",
"max 4.219429 -10.000000 -6.000000 -2.000000 -2.000000 \n",
"\n",
" 10 11 12 \n",
"count 4195.000000 4195.000000 4195.000000 \n",
"mean 170.046246 5.547367 5.750165 \n",
"std 296.887015 1.517038 8.339211 \n",
"min 23.000000 4.147707 2.589085 \n",
"25% 94.000000 5.061843 3.862810 \n",
"50% 127.000000 5.380853 4.781513 \n",
"75% 175.000000 5.748553 5.887947 \n",
"max 5515.000000 32.762073 150.432368 "
]
},
"metadata": {
"tags": []
},
"execution_count": 43
}
]
},
{
"metadata": {
"id": "8F4kkUQBexyr",
"colab_type": "code",
"outputId": "71d2a9fd-520d-4d4e-9d2f-541fbb8efbcc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"cell_type": "code",
"source": [
"#Model #1 - Catboost\n",
"\n",
"train_pool = Pool(X_train, y_train)\n",
"m = CatBoostRegressor(iterations=10000, loss_function='MAE', boosting_type='Ordered')\n",
"m.fit(X_train, y_train, silent=True)\n",
"m.best_score_"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'learn': {'MAE': 1.793202917819361}}"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"metadata": {
"id": "DcVdjqEDjBJg",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment