From 5a434f7daca0f475eb9a718f19d29495f719874a Mon Sep 17 00:00:00 2001 From: florencep Date: Mon, 8 Apr 2019 15:01:37 -0700 Subject: [PATCH] delete this file. --- .../energy_price_forecasting.ipynb | 1204 ----------------- 1 file changed, 1204 deletions(-) delete mode 100644 tables/automl/notebooks/energy_price_forecasting/energy_price_forecasting.ipynb diff --git a/tables/automl/notebooks/energy_price_forecasting/energy_price_forecasting.ipynb b/tables/automl/notebooks/energy_price_forecasting/energy_price_forecasting.ipynb deleted file mode 100644 index ac78b272c4b..00000000000 --- a/tables/automl/notebooks/energy_price_forecasting/energy_price_forecasting.ipynb +++ /dev/null @@ -1,1204 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Energy_Price_Forecasting.ipynb", - "version": "0.3.2", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - } - }, - "cells": [ - { - "metadata": { - "id": "KOAz-lD1P7Kx", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "----------------------------------------\n", - "\n", - "Copyright 2018 Google LLC \n", - "\n", - "Licensed under the Apache License, Version 2.0 (the \"License\");\n", - "you may not use this file except in compliance with the License.\n", - "You may obtain a copy of the License at\n", - "\n", - "[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n", - "\n", - "Unless required by applicable law or agreed to in writing, software\n", - "distributed under the License is distributed on an \"AS IS\" BASIS,\n", - "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", - "See the License for the specific language governing permissions and limitations under the License.\n", - "\n", - "----------------------------------------" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "m26YhtBMvVWA" - }, - "cell_type": "markdown", - "source": [ - "# Energy Forecasting with AutoML Tables\n", - "\n", - "To use this Colab notebook, copy it to your own Google Drive and open it with [Colaboratory](https://colab.research.google.com/) (or Colab). To run a cell hold the Shift key and press the Enter key (or Return key). Colab automatically displays the return value of the last line in each cell. Refer to [this page](https://colab.sandbox.google.com/notebooks/welcome.ipynb) for more information on Colab.\n", - "\n", - "You can run a Colab notebook on a hosted runtime in the Cloud. The hosted VM times out after 90 minutes of inactivity and you will lose all the data stored in the memory including your authentication data. If your session gets disconnected (for example, because you closed your laptop) for less than the 90 minute inactivity timeout limit, press 'RECONNECT' on the top right corner of your notebook and resume the session. After Colab timeout, you'll need to\n", - "\n", - "1. Re-run the initialization and authentication.\n", - "2. Continue from where you left off. You may need to copy-paste the value of some variables such as the `dataset_name` from the printed output of the previous cells.\n", - "\n", - "Alternatively you can connect your Colab notebook to a [local runtime](https://research.google.com/colaboratory/local-runtimes.html)." - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "b--5FDDwCG9C" - }, - "cell_type": "markdown", - "source": [ - "## 1. Project set up\n", - "\n", - "\n", - "\n" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "AZs0ICgy4jkQ" - }, - "cell_type": "markdown", - "source": [ - "Follow the [AutoML Tables documentation](https://cloud.google.com/automl-tables/docs/) to\n", - "* Create a Google Cloud Platform (GCP) project.\n", - "* Enable billing.\n", - "* Apply to whitelist your project.\n", - "* Enable AutoML API.\n", - "* Enable AutoML Talbes API.\n", - "* Create a service account, grant required permissions, and download the service account private key.\n", - "\n", - "You also need to upload your data into Google Cloud Storage (GCS) or BigQuery. For example, to use GCS as your data source\n", - "* Create a GCS bucket.\n", - "* Upload the training and batch prediction files.\n", - "\n", - "\n", - "**Warning:** Private keys must be kept secret. If you expose your private key it is recommended to revoke it immediately from the Google Cloud Console." - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "xZECt1oL429r" - }, - "cell_type": "markdown", - "source": [ - "\n", - "\n", - "---\n", - "\n" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "rstRPH9SyZj_" - }, - "cell_type": "markdown", - "source": [ - "## 2. Initialize and authenticate\n", - "This section runs intialization and authentication. It creates an authenticated session which is required for running any of the following sections." - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "BR0POq2UzE7e" - }, - "cell_type": "markdown", - "source": [ - "### Install the client library\n", - "Run the following cell. Click on the 'Choose Files' button and select the client library compressed file. The file is uploaded to your Colab and installed using `pip`." - ] - }, - { - "metadata": { - "id": "43aXKjDRt_qZ", - "colab_type": "code", - "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": 602 - }, - "outputId": "4d3628f9-e5be-4145-f550-8eaffca97d37" - }, - "cell_type": "code", - "source": [ - "#@title Install AutoML Tables client library { vertical-output: true }\n", - "\n", - "from __future__ import absolute_import\n", - "from __future__ import division\n", - "from __future__ import print_function\n", - "\n", - "from google.colab import files\n", - "import tarfile\n", - "\n", - "# Upload the client library\n", - "compressed_file_upload = files.upload()\n", - "compressed_file_name = list(compressed_file_upload.keys())[0]\n", - "# Decompress the client library\n", - "with tarfile.open(compressed_file_name) as tar:\n", - " tar.extractall(path='.')\n", - "# Install the client library\n", - "!pip install ./python" - ], - "execution_count": 1, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/html": [ - "\n", - " \n", - " \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", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "Saving automl-beta-python-20190314 (1).tar.gz to automl-beta-python-20190314 (1).tar.gz\n", - "Processing ./python\n", - "Requirement already satisfied: google-api-core[grpc]<2.0.0dev,>=1.6.0 in /usr/local/lib/python3.6/dist-packages (from google-cloud-automl==0.1.2) (1.8.1)\n", - "Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (1.11.0)\n", - "Requirement already satisfied: protobuf>=3.4.0 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (3.7.0)\n", - "Requirement already satisfied: requests<3.0.0dev,>=2.18.0 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (2.18.4)\n", - "Requirement already satisfied: pytz in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (2018.9)\n", - "Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (40.8.0)\n", - "Requirement already satisfied: google-auth<2.0dev,>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (1.4.2)\n", - "Requirement already satisfied: googleapis-common-protos!=1.5.4,<2.0dev,>=1.5.3 in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (1.5.8)\n", - "Requirement already satisfied: grpcio>=1.8.2; extra == \"grpc\" in /usr/local/lib/python3.6/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (1.15.0)\n", - "Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (2.6)\n", - "Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (1.22)\n", - "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (3.0.4)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (2019.3.9)\n", - "Requirement already satisfied: cachetools>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from google-auth<2.0dev,>=0.4.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (3.1.0)\n", - "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.6/dist-packages (from google-auth<2.0dev,>=0.4.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (0.2.4)\n", - "Requirement already satisfied: rsa>=3.1.4 in /usr/local/lib/python3.6/dist-packages (from google-auth<2.0dev,>=0.4.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (4.0)\n", - "Requirement already satisfied: pyasn1<0.5.0,>=0.4.1 in /usr/local/lib/python3.6/dist-packages (from pyasn1-modules>=0.2.1->google-auth<2.0dev,>=0.4.0->google-api-core[grpc]<2.0.0dev,>=1.6.0->google-cloud-automl==0.1.2) (0.4.5)\n", - "Building wheels for collected packages: google-cloud-automl\n", - " Building wheel for google-cloud-automl (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Stored in directory: /tmp/pip-ephem-wheel-cache-xklgs304/wheels/70/a0/a6/6112668f018c42dcdddf1e16bc95f8fcc25dd950fe20ab8b80\n", - "Successfully built google-cloud-automl\n", - "Installing collected packages: google-cloud-automl\n", - "Successfully installed google-cloud-automl-0.1.2\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.colab-display-data+json": { - "pip_warning": { - "packages": [ - "google" - ] - } - } - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "eVFsPPEociwF" - }, - "cell_type": "markdown", - "source": [ - "### Authenticate using service account key\n", - "Run the following cell. Click on the 'Choose Files' button and select the service account private key file. If your Service Account key file or folder is hidden, you can reveal it in a Mac by pressing the Command + Shift + . combo." - ] - }, - { - "metadata": { - "id": "u-kCqysAuaJk", - "colab_type": "code", - "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": 71 - }, - "outputId": "06154a63-f410-435f-b565-cd1599243b88" - }, - "cell_type": "code", - "source": [ - "#@title Authenticate using service account key and create a client. { vertical-output: true }\n", - "\n", - "from google.cloud import automl_v1beta1\n", - "\n", - "# Upload service account key\n", - "keyfile_upload = files.upload()\n", - "keyfile_name = list(keyfile_upload.keys())[0]\n", - "# Authenticate and create an AutoML client.\n", - "client = automl_v1beta1.AutoMlClient.from_service_account_file(keyfile_name)\n", - "# Authenticate and create a prediction service client.\n", - "prediction_client = automl_v1beta1.PredictionServiceClient.from_service_account_file(keyfile_name)" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/html": [ - "\n", - " \n", - " \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", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "Saving energy-forecasting.json to energy-forecasting.json\n" - ], - "name": "stdout" - } - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "s3F2xbEJdDvN" - }, - "cell_type": "markdown", - "source": [ - "### Set Project and Location" - ] - }, - { - "metadata": { - "id": "0uX4aJYUiXh5", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "Enter your GCP project ID." - ] - }, - { - "metadata": { - "colab_type": "code", - "id": "6R4h5HF1Dtds", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "outputId": "1e049b34-4683-4755-ab08-aec08de2bc66" - }, - "cell_type": "code", - "source": [ - "#@title GCP project ID and location\n", - "\n", - "project_id = 'energy-forecasting' #@param {type:'string'}\n", - "location = 'us-central1' #@param {type:'string'}\n", - "location_path = client.location_path(project_id, location)\n", - "location_path" - ], - "execution_count": 3, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "'projects/energy-forecasting/locations/us-central1'" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 3 - } - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "qozQWMnOu48y" - }, - "cell_type": "markdown", - "source": [ - "\n", - "\n", - "---\n", - "\n" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "ODt86YuVDZzm" - }, - "cell_type": "markdown", - "source": [ - "## 3. Import training data" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "XwjZc9Q62Fm5" - }, - "cell_type": "markdown", - "source": [ - "### Create dataset" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "_JfZFGSceyE_" - }, - "cell_type": "markdown", - "source": [ - "Select a dataset display name and pass your table source information to create a new dataset." - ] - }, - { - "metadata": { - "id": "Z_JErW3cw-0J", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 224 - }, - "outputId": "7fe366df-73ae-4ab1-ceaa-fd6ced4ccdd9" - }, - "cell_type": "code", - "source": [ - "#@title Create dataset { vertical-output: true, output-height: 200 }\n", - "\n", - "dataset_display_name = 'energy_forecasting_solution' #@param {type: 'string'}\n", - "\n", - "create_dataset_response = client.create_dataset(\n", - " location_path,\n", - " {'display_name': dataset_display_name, 'tables_dataset_metadata': {}})\n", - "dataset_name = create_dataset_response.name\n", - "create_dataset_response" - ], - "execution_count": 14, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "name: \"projects/595920091534/locations/us-central1/datasets/TBL1714094647237672960\"\n", - "display_name: \"energy_forecasting_solution\"\n", - "create_time {\n", - " seconds: 1553639618\n", - " nanos: 347402000\n", - "}\n", - "etag: \"AB3BwFrebKY3sN1sMcQWwhizE_rWgZl2_9My3WhNx5HxmYWJvfwg4C-wkYpkvhY3Mkvz\"\n", - "tables_dataset_metadata {\n", - " stats_update_time {\n", - " }\n", - "}" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "35YZ9dy34VqJ" - }, - "cell_type": "markdown", - "source": [ - "### Import data" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "3c0o15gVREAw" - }, - "cell_type": "markdown", - "source": [ - "You can import your data to AutoML Tables from GCS or BigQuery. For this tutorial, you can use the [iris dataset](https://storage.cloud.google.com/rostam-193618-tutorial/automl-tables-v1beta1/iris.csv) as your training data. You can create a GCS bucket and upload the data into your bucket. The URI for your file is `gs://BUCKET_NAME/FOLDER_NAME1/FOLDER_NAME2/.../FILE_NAME`. Alternatively you can create a BigQuery table and upload the data into the table. The URI for your table is `bq://PROJECT_ID.DATASET_ID.TABLE_ID`.\n", - "\n", - "Importing data may take a few minutes or hours depending on the size of your data. If your Colab times out, run the following command to retrieve your dataset. Replace `dataset_name` with its actual value obtained in the preceding cells.\n", - "\n", - " dataset = client.get_dataset(dataset_name)" - ] - }, - { - "metadata": { - "id": "bB_GdeqCJW5i", - "colab_type": "code", - "colab": {} - }, - "cell_type": "code", - "source": [ - "#@title Datasource in BigQuery { vertical-output: true }\n", - "\n", - "dataset_bq_input_uri = 'bq://energy-forecasting.Energy.automldata' #@param {type: 'string'}\n", - "# Define input configuration.\n", - "input_config = {\n", - " 'bigquery_source': {\n", - " 'input_uri': dataset_bq_input_uri\n", - " }\n", - "}" - ], - "execution_count": 0, - "outputs": [] - }, - { - "metadata": { - "id": "FNVYfpoXJsNB", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 139 - }, - "outputId": "0ecc8d11-5bf1-4c2e-f688-b6d9be934e3c" - }, - "cell_type": "code", - "source": [ - " #@title Import data { vertical-output: true }\n", - "\n", - "import_data_response = client.import_data(dataset_name, input_config)\n", - "print('Dataset import operation: {}'.format(import_data_response.operation))\n", - "# Wait until import is done.\n", - "import_data_result = import_data_response.result()\n", - "import_data_result" - ], - "execution_count": 16, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Dataset import operation: name: \"projects/595920091534/locations/us-central1/operations/TBL5340820557317275648\"\n", - "metadata {\n", - " type_url: \"type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata\"\n", - " value: \"\\032\\014\\010\\305\\321\\352\\344\\005\\020\\300\\307\\214\\365\\001\\\"\\014\\010\\305\\321\\352\\344\\005\\020\\300\\307\\214\\365\\001z\\000\"\n", - "}\n", - "\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 16 - } - ] - }, - { - "metadata": { - "id": "QdxBI4s44ZRI", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "### Review the specs" - ] - }, - { - "metadata": { - "id": "RC0PWKqH4jwr", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "Run the following command to see table specs such as row count." - ] - }, - { - "metadata": { - "id": "v2Vzq_gwXxo-", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 3247 - }, - "outputId": "c89cd7b1-4344-46d9-c4a3-1b012b5b720d" - }, - "cell_type": "code", - "source": [ - "#@title Table schema { vertical-output: true }\n", - "\n", - "import google.cloud.automl_v1beta1.proto.data_types_pb2 as data_types\n", - "\n", - "# List table specs\n", - "list_table_specs_response = client.list_table_specs(dataset_name)\n", - "table_specs = [s for s in list_table_specs_response]\n", - "# List column specs\n", - "table_spec_name = table_specs[0].name\n", - "list_column_specs_response = client.list_column_specs(table_spec_name)\n", - "column_specs = {s.display_name: s for s in list_column_specs_response}\n", - "[(x, data_types.TypeCode.Name(\n", - " column_specs[x].data_type.type_code)) for x in column_specs.keys()]" - ], - "execution_count": 17, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[('price', 'FLOAT64'),\n", - " ('date_utc', 'TIMESTAMP'),\n", - " ('day', 'CATEGORY'),\n", - " ('hour', 'FLOAT64'),\n", - " ('prev_week_min', 'FLOAT64'),\n", - " ('prev_week_25th', 'FLOAT64'),\n", - " ('prev_week_50th', 'FLOAT64'),\n", - " ('prev_week_75th', 'FLOAT64'),\n", - " ('prev_week_max', 'FLOAT64'),\n", - " ('point1_temperature', 'FLOAT64'),\n", - " ('point1_wind_speed_100m', 'FLOAT64'),\n", - " ('point1_wind_direction_100m', 'FLOAT64'),\n", - " ('point1_air_density', 'FLOAT64'),\n", - " ('point1_precipitation', 'FLOAT64'),\n", - " ('point1_wind_gust', 'FLOAT64'),\n", - " ('point1_radiation', 'FLOAT64'),\n", - " ('point1_wind_speed', 'FLOAT64'),\n", - " ('point1_wind_direction', 'FLOAT64'),\n", - " ('point1_pressure', 'FLOAT64'),\n", - " ('point2_temperature', 'FLOAT64'),\n", - " ('point2_wind_speed_100m', 'FLOAT64'),\n", - " ('point2_wind_direction_100m', 'FLOAT64'),\n", - " ('point2_air_density', 'FLOAT64'),\n", - " ('point2_precipitation', 'FLOAT64'),\n", - " ('point2_wind_gust', 'FLOAT64'),\n", - " ('point2_radiation', 'FLOAT64'),\n", - " ('point2_wind_speed', 'FLOAT64'),\n", - " ('point2_wind_direction', 'FLOAT64'),\n", - " ('point2_pressure', 'FLOAT64'),\n", - " ('point3_temperature', 'FLOAT64'),\n", - " ('point3_wind_speed_100m', 'FLOAT64'),\n", - " ('point3_wind_direction_100m', 'FLOAT64'),\n", - " ('point3_air_density', 'FLOAT64'),\n", - " ('point3_precipitation', 'FLOAT64'),\n", - " ('point3_wind_gust', 'FLOAT64'),\n", - " ('point3_radiation', 'FLOAT64'),\n", - " ('point3_wind_speed', 'FLOAT64'),\n", - " ('point3_wind_direction', 'FLOAT64'),\n", - " ('point3_pressure', 'FLOAT64'),\n", - " ('point4_temperature', 'FLOAT64'),\n", - " ('point4_wind_speed_100m', 'FLOAT64'),\n", - " ('point4_wind_direction_100m', 'FLOAT64'),\n", - " ('point4_air_density', 'FLOAT64'),\n", - " ('point4_precipitation', 'FLOAT64'),\n", - " ('point4_wind_gust', 'FLOAT64'),\n", - " ('point4_radiation', 'FLOAT64'),\n", - " ('point4_wind_speed', 'FLOAT64'),\n", - " ('point4_wind_direction', 'FLOAT64'),\n", - " ('point4_pressure', 'FLOAT64'),\n", - " ('point5_temperature', 'FLOAT64'),\n", - " ('point5_wind_speed_100m', 'FLOAT64'),\n", - " ('point5_wind_direction_100m', 'FLOAT64'),\n", - " ('point5_air_density', 'FLOAT64'),\n", - " ('point5_precipitation', 'FLOAT64'),\n", - " ('point5_wind_gust', 'FLOAT64'),\n", - " ('point5_radiation', 'FLOAT64'),\n", - " ('point5_wind_speed', 'FLOAT64'),\n", - " ('point5_wind_direction', 'FLOAT64'),\n", - " ('point5_pressure', 'FLOAT64'),\n", - " ('point6_temperature', 'FLOAT64'),\n", - " ('point6_wind_speed_100m', 'FLOAT64'),\n", - " ('point6_wind_direction_100m', 'FLOAT64'),\n", - " ('point6_air_density', 'FLOAT64'),\n", - " ('point6_precipitation', 'FLOAT64'),\n", - " ('point6_wind_gust', 'FLOAT64'),\n", - " ('point6_radiation', 'FLOAT64'),\n", - " ('point6_wind_speed', 'FLOAT64'),\n", - " ('point6_wind_direction', 'FLOAT64'),\n", - " ('point6_pressure', 'FLOAT64'),\n", - " ('point7_temperature', 'FLOAT64'),\n", - " ('point7_wind_speed_100m', 'FLOAT64'),\n", - " ('point7_wind_direction_100m', 'FLOAT64'),\n", - " ('point7_air_density', 'FLOAT64'),\n", - " ('point7_precipitation', 'FLOAT64'),\n", - " ('point7_wind_gust', 'FLOAT64'),\n", - " ('point7_radiation', 'FLOAT64'),\n", - " ('point7_wind_speed', 'FLOAT64'),\n", - " ('point7_wind_direction', 'FLOAT64'),\n", - " ('point7_pressure', 'FLOAT64'),\n", - " ('point8_temperature', 'FLOAT64'),\n", - " ('point8_wind_speed_100m', 'FLOAT64'),\n", - " ('point8_wind_direction_100m', 'FLOAT64'),\n", - " ('point8_air_density', 'FLOAT64'),\n", - " ('point8_precipitation', 'FLOAT64'),\n", - " ('point8_wind_gust', 'FLOAT64'),\n", - " ('point8_radiation', 'FLOAT64'),\n", - " ('point8_wind_speed', 'FLOAT64'),\n", - " ('point8_wind_direction', 'FLOAT64'),\n", - " ('point8_pressure', 'FLOAT64'),\n", - " ('point9_temperature', 'FLOAT64'),\n", - " ('point9_wind_speed_100m', 'FLOAT64'),\n", - " ('point9_wind_direction_100m', 'FLOAT64'),\n", - " ('point9_air_density', 'FLOAT64'),\n", - " ('point9_precipitation', 'FLOAT64'),\n", - " ('point9_wind_gust', 'FLOAT64'),\n", - " ('point9_radiation', 'FLOAT64'),\n", - " ('point9_wind_speed', 'FLOAT64'),\n", - " ('point9_wind_direction', 'FLOAT64'),\n", - " ('point9_pressure', 'FLOAT64'),\n", - " ('point10_temperature', 'FLOAT64'),\n", - " ('point10_wind_speed_100m', 'FLOAT64'),\n", - " ('point10_wind_direction_100m', 'FLOAT64'),\n", - " ('point10_air_density', 'FLOAT64'),\n", - " ('point10_precipitation', 'FLOAT64'),\n", - " ('point10_wind_gust', 'FLOAT64'),\n", - " ('point10_radiation', 'FLOAT64'),\n", - " ('point10_wind_speed', 'FLOAT64'),\n", - " ('point10_wind_direction', 'FLOAT64'),\n", - " ('point10_pressure', 'FLOAT64'),\n", - " ('point11_temperature', 'FLOAT64'),\n", - " ('point11_wind_speed_100m', 'FLOAT64'),\n", - " ('point11_wind_direction_100m', 'FLOAT64'),\n", - " ('point11_air_density', 'FLOAT64'),\n", - " ('point11_precipitation', 'FLOAT64'),\n", - " ('point11_wind_gust', 'FLOAT64'),\n", - " ('point11_radiation', 'FLOAT64'),\n", - " ('point11_wind_speed', 'FLOAT64'),\n", - " ('point11_wind_direction', 'FLOAT64'),\n", - " ('point11_pressure', 'FLOAT64'),\n", - " ('point12_temperature', 'FLOAT64'),\n", - " ('point12_wind_speed_100m', 'FLOAT64'),\n", - " ('point12_wind_direction_100m', 'FLOAT64'),\n", - " ('point12_air_density', 'FLOAT64'),\n", - " ('point12_precipitation', 'FLOAT64'),\n", - " ('point12_wind_gust', 'FLOAT64'),\n", - " ('point12_radiation', 'FLOAT64'),\n", - " ('point12_wind_speed', 'FLOAT64'),\n", - " ('point12_wind_direction', 'FLOAT64'),\n", - " ('point12_pressure', 'FLOAT64'),\n", - " ('point13_temperature', 'FLOAT64'),\n", - " ('point13_wind_speed_100m', 'FLOAT64'),\n", - " ('point13_wind_direction_100m', 'FLOAT64'),\n", - " ('point13_air_density', 'FLOAT64'),\n", - " ('point13_precipitation', 'FLOAT64'),\n", - " ('point13_wind_gust', 'FLOAT64'),\n", - " ('point13_radiation', 'FLOAT64'),\n", - " ('point13_wind_speed', 'FLOAT64'),\n", - " ('point13_wind_direction', 'FLOAT64'),\n", - " ('point13_pressure', 'FLOAT64'),\n", - " ('point14_temperature', 'FLOAT64'),\n", - " ('point14_wind_speed_100m', 'FLOAT64'),\n", - " ('point14_wind_direction_100m', 'FLOAT64'),\n", - " ('point14_air_density', 'FLOAT64'),\n", - " ('point14_precipitation', 'FLOAT64'),\n", - " ('point14_wind_gust', 'FLOAT64'),\n", - " ('point14_radiation', 'FLOAT64'),\n", - " ('point14_wind_speed', 'FLOAT64'),\n", - " ('point14_wind_direction', 'FLOAT64'),\n", - " ('point14_pressure', 'FLOAT64'),\n", - " ('point15_temperature', 'FLOAT64'),\n", - " ('point15_wind_speed_100m', 'FLOAT64'),\n", - " ('point15_wind_direction_100m', 'FLOAT64'),\n", - " ('point15_air_density', 'FLOAT64'),\n", - " ('point15_precipitation', 'FLOAT64'),\n", - " ('point15_wind_gust', 'FLOAT64'),\n", - " ('point15_radiation', 'FLOAT64'),\n", - " ('point15_wind_speed', 'FLOAT64'),\n", - " ('point15_wind_direction', 'FLOAT64'),\n", - " ('point15_pressure', 'FLOAT64'),\n", - " ('point16_temperature', 'FLOAT64'),\n", - " ('point16_wind_speed_100m', 'FLOAT64'),\n", - " ('point16_wind_direction_100m', 'FLOAT64'),\n", - " ('point16_air_density', 'FLOAT64'),\n", - " ('point16_precipitation', 'FLOAT64'),\n", - " ('point16_wind_gust', 'FLOAT64'),\n", - " ('point16_radiation', 'FLOAT64'),\n", - " ('point16_wind_speed', 'FLOAT64'),\n", - " ('point16_wind_direction', 'FLOAT64'),\n", - " ('point16_pressure', 'FLOAT64'),\n", - " ('point17_temperature', 'FLOAT64'),\n", - " ('point17_wind_speed_100m', 'FLOAT64'),\n", - " ('point17_wind_direction_100m', 'FLOAT64'),\n", - " ('point17_air_density', 'FLOAT64'),\n", - " ('point17_precipitation', 'FLOAT64'),\n", - " ('point17_wind_gust', 'FLOAT64'),\n", - " ('point17_radiation', 'FLOAT64'),\n", - " ('point17_wind_speed', 'FLOAT64'),\n", - " ('point17_wind_direction', 'FLOAT64'),\n", - " ('point17_pressure', 'FLOAT64'),\n", - " ('point18_temperature', 'FLOAT64'),\n", - " ('point18_wind_speed_100m', 'FLOAT64'),\n", - " ('point18_wind_direction_100m', 'FLOAT64'),\n", - " ('point18_air_density', 'FLOAT64'),\n", - " ('point18_precipitation', 'FLOAT64'),\n", - " ('point18_wind_gust', 'FLOAT64'),\n", - " ('point18_radiation', 'FLOAT64'),\n", - " ('point18_wind_speed', 'FLOAT64'),\n", - " ('point18_wind_direction', 'FLOAT64'),\n", - " ('point18_pressure', 'FLOAT64'),\n", - " ('split', 'CATEGORY')]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - } - ] - }, - { - "metadata": { - "id": "vcJP7xoq4yAJ", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "Run the following command to see column specs such inferred schema." - ] - }, - { - "metadata": { - "id": "FNykW_YOYt6d", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "___" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "kNRVJqVOL8h3" - }, - "cell_type": "markdown", - "source": [ - "## 4. Update dataset: assign a label column and enable nullable columns" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "-57gehId9PQ5" - }, - "cell_type": "markdown", - "source": [ - "AutoML Tables automatically detects your data column type. For example, for the [Iris dataset](https://storage.cloud.google.com/rostam-193618-tutorial/automl-tables-v1beta1/iris.csv) it detects `species` to be categorical and `petal_length`, `petal_width`, `sepal_length`, and `sepal_width` to be numerical. Depending on the type of your label column, AutoML Tables chooses to run a classification or regression model. If your label column contains only numerical values, but they represent categories, change your label column type to categorical by updating your schema." - ] - }, - { - "metadata": { - "id": "iRqdQ7Xiq04x", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "### Update a column: set as categorical" - ] - }, - { - "metadata": { - "id": "OCEUIPKegWrf", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "outputId": "44370b2c-f3dc-46bc-cefd-8a6f29f9cabe" - }, - "cell_type": "code", - "source": [ - "#@title Update dataset { vertical-output: true }\n", - "\n", - "column_to_category = 'hour' #@param {type: 'string'}\n", - "\n", - "update_column_spec_dict = {\n", - " \"name\": column_specs[column_to_category].name,\n", - " \"data_type\": {\n", - " \"type_code\": \"CATEGORY\"\n", - " }\n", - "}\n", - "update_column_response = client.update_column_spec(update_column_spec_dict)\n", - "update_column_response.display_name , update_column_response.data_type \n" - ], - "execution_count": 18, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "('hour', type_code: CATEGORY)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 18 - } - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "nDMH_chybe4w" - }, - "cell_type": "markdown", - "source": [ - "### Update dataset: assign a label and split column" - ] - }, - { - "metadata": { - "id": "hVIruWg0u33t", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 360 - }, - "outputId": "eeb5f733-16ec-4191-ea59-c2fab30c8442" - }, - "cell_type": "code", - "source": [ - "#@title Update dataset { vertical-output: true }\n", - "\n", - "label_column_name = 'price' #@param {type: 'string'}\n", - "label_column_spec = column_specs[label_column_name]\n", - "label_column_id = label_column_spec.name.rsplit('/', 1)[-1]\n", - "print('Label column ID: {}'.format(label_column_id))\n", - "\n", - "split_column_name = 'split' #@param {type: 'string'}\n", - "split_column_spec = column_specs[split_column_name]\n", - "split_column_id = split_column_spec.name.rsplit('/', 1)[-1]\n", - "print('Split column ID: {}'.format(split_column_id))\n", - "# Define the values of the fields to be updated.\n", - "update_dataset_dict = {\n", - " 'name': dataset_name,\n", - " 'tables_dataset_metadata': {\n", - " 'target_column_spec_id': label_column_id,\n", - " 'ml_use_column_spec_id': split_column_id,\n", - " }\n", - "}\n", - "update_dataset_response = client.update_dataset(update_dataset_dict)\n", - "update_dataset_response" - ], - "execution_count": 19, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Label column ID: 4897277566672437248\n", - "Split column ID: 7923696516265410560\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "name: \"projects/595920091534/locations/us-central1/datasets/TBL1714094647237672960\"\n", - "display_name: \"energy_forecasting_solution\"\n", - "create_time {\n", - " seconds: 1553639618\n", - " nanos: 347402000\n", - "}\n", - "etag: \"AB3BwFr63Q-dtuKoAhrA3aEzOPOegFk2vjx1bcfkr_dgsZd_KM5G98s7ADiCuq5XcKw=\"\n", - "example_count: 6552\n", - "tables_dataset_metadata {\n", - " primary_table_spec_id: \"7971723184166666240\"\n", - " target_column_spec_id: \"4897277566672437248\"\n", - " ml_use_column_spec_id: \"7923696516265410560\"\n", - " stats_update_time {\n", - " seconds: 1553639685\n", - " nanos: 199000000\n", - " }\n", - "}" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 19 - } - ] - }, - { - "metadata": { - "id": "z23NITLrcxmi", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "___" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "FcKgvj1-Tbgj" - }, - "cell_type": "markdown", - "source": [ - "## 5. Creating a model" - ] - }, - { - "metadata": { - "colab_type": "text", - "id": "Pnlk8vdQlO_k" - }, - "cell_type": "markdown", - "source": [ - "### Train a model\n", - "Specify the duration of the training. For example, `'train_budget_milli_node_hours': 1000` runs the training for one hour. If your Colab times out, use `client.list_models(location_path)` to check whether your model has been created. Then use model name to continue to the next steps. Run the following command to retrieve your model. Replace `model_name` with its actual value.\n", - "\n", - " model = client.get_model(model_name)" - ] - }, - { - "metadata": { - "id": "11izNd6Fu37N", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 139 - }, - "outputId": "1bca25aa-eb19-4b27-a3fa-7ef137aaf4e2" - }, - "cell_type": "code", - "source": [ - "#@title Create model { vertical-output: true }\n", - "\n", - "\n", - "\n", - "model_display_name = 'energy_model' #@param {type:'string'}\n", - "model_train_hours = 12 #@param {type:'integer'}\n", - "model_optimization_objective = 'MINIMIZE_MAE' #@param {type:'string'}\n", - "column_to_ignore = 'date_utc' #@param {type:'string'}\n", - "\n", - "# Create list of features to use\n", - "feat_list = list(column_specs.keys())\n", - "feat_list.remove(label_column_name)\n", - "feat_list.remove(split_column_name)\n", - "feat_list.remove(column_to_ignore)\n", - "\n", - "model_dict = {\n", - " 'display_name': model_display_name,\n", - " 'dataset_id': dataset_name.rsplit('/', 1)[-1],\n", - " 'tables_model_metadata': {\n", - " 'train_budget_milli_node_hours':model_train_hours * 1000,\n", - " 'optimization_objective': model_optimization_objective,\n", - " 'target_column_spec': column_specs[label_column_name],\n", - " 'input_feature_column_specs': [\n", - " column_specs[x] for x in feat_list]}\n", - " }\n", - " \n", - "create_model_response = client.create_model(location_path, model_dict)\n", - "print('Dataset import operation: {}'.format(create_model_response.operation))\n", - "# Wait until model training is done.\n", - "create_model_result = create_model_response.result()\n", - "model_name = create_model_result.name\n", - "create_model_result" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Dataset import operation: name: \"projects/595920091534/locations/us-central1/operations/TBL1734281680723640320\"\n", - "metadata {\n", - " type_url: \"type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata\"\n", - " value: \"\\032\\014\\010\\236\\324\\352\\344\\005\\020\\350\\353\\256\\245\\002\\\"\\014\\010\\236\\324\\352\\344\\005\\020\\350\\353\\256\\245\\002R\\000\"\n", - "}\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "metadata": { - "id": "puVew1GgPfQa", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 85 - }, - "outputId": "42b9296c-d231-4787-f7fb-4aa1a6ff9bd9" - }, - "cell_type": "code", - "source": [ - "#@title Model Metrics {vertical-output: true }\n", - "\n", - "metrics= [x for x in client.list_model_evaluations(model_name)][-1]\n", - "metrics.regression_evaluation_metrics" - ], - "execution_count": 9, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "root_mean_squared_error: 0.0524103119969368\n", - "mean_absolute_error: 0.04162062332034111\n", - "mean_absolute_percentage_error: 8.693264961242676\n", - "r_squared: 0.5450255274772644" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 9 - } - ] - }, - { - "metadata": { - "id": "YQnfEwyrSt2T", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "![alt text](https://storage.googleapis.com/images_public/automl_test.png)" - ] - }, - { - "metadata": { - "id": "Vyc8ckbpRMHp", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 272 - }, - "outputId": "931d4921-2144-4092-dab6-165c1b1c2a88" - }, - "cell_type": "code", - "source": [ - "#@title Feature Importance {vertical-output: true }\n", - "\n", - "model = client.get_model(model_name)\n", - "feat_list = [(x.feature_importance, x.column_display_name) for x in model.tables_model_metadata.tables_model_column_info]\n", - "feat_list.sort(reverse=True)\n", - "feat_list[:15]" - ], - "execution_count": 12, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[(0.037560366094112396, 'day'),\n", - " (0.02844194509088993, 'hour'),\n", - " (0.021969439461827278, 'point6_pressure'),\n", - " (0.017835542559623718, 'point10_pressure'),\n", - " (0.01292468048632145, 'point3_pressure'),\n", - " (0.011175047606229782, 'point15_wind_speed_100m'),\n", - " (0.011016246862709522, 'point11_radiation'),\n", - " (0.010922599583864212, 'point6_wind_gust'),\n", - " (0.010761065408587456, 'prev_week_25th'),\n", - " (0.010502426885068417, 'point4_pressure'),\n", - " (0.010326736606657505, 'point4_wind_speed'),\n", - " (0.009977834299206734, 'point2_pressure'),\n", - " (0.009956032037734985, 'point8_wind_gust'),\n", - " (0.009465079754590988, 'prev_week_min'),\n", - " (0.009312096051871777, 'point7_wind_speed_100m')]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "metadata": { - "id": "__2gDQ5I5gcj", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "![alt text](https://storage.googleapis.com/images_public/feature_importance.png)\n", - "![alt text](https://storage.googleapis.com/images_public/loc_portugal.png)\n", - "![alt text](https://storage.googleapis.com/images_public/weather_schema.png)\n", - "![alt text](https://storage.googleapis.com/images_public/training_schema.png)" - ] - }, - { - "metadata": { - "id": "1wS1is9IY5nK", - "colab_type": "text" - }, - "cell_type": "markdown", - "source": [ - "___" - ] - } - ] -} \ No newline at end of file