{"id":11654,"date":"2022-09-21T07:30:35","date_gmt":"2022-09-21T07:30:35","guid":{"rendered":"https:\/\/predictly.se\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/"},"modified":"2024-05-08T11:46:41","modified_gmt":"2024-05-08T11:46:41","slug":"getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful","status":"publish","type":"post","link":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/","title":{"rendered":"Getting started: Machine Learning at GCP &#8211; Part 2: Making data clean and useful"},"content":{"rendered":"<p>In the <a href=\"https:\/\/www.predictly.se\/getting-started-machine-learning-pa-gcp-del-1-att-gora-data-tillgangligt-och-atkomligt\/\">last article<\/a> we covered how to make our data accessible and available. Now that we have our raw data in a BigQuery table we can begin exploring and getting to know our data.<\/p>\n<p>Data exploration is a highly iterative process. It helps to work in an interactive environment, where the data is kept in memory. This allows the user to make multiple transformations, visualizations and test hypothesis without needing to query the raw data multiple times.<\/p>\n<p>For this purpose we are going to use a GCP hosted <a href=\"https:\/\/jupyter.org\/\" target=\"_blank\" rel=\"noopener\">Jupyter Notebook<\/a>, a well known tool for most data scientists.<\/p>\n<p><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27500%27%20height%3D%27500%27%20viewBox%3D%270%200%20500%20500%27%3E%3Crect%20width%3D%27500%27%20height%3D%27500%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/jupyter.jpeg\" alt=\"Jupyter logo\"><\/p>\n<h6>Data mining<\/h6>\n<p>The notebook allows the data scientist to use the tools already known to them, like pandas or numpy for data transformations, or seaborn and matplotlib for data visualizations.<\/p>\n<p>The notebook environment also allows the data scientist to work from anywhere without having to setup a local environment, opening connections to fire walled source systems, etc., tasks that usually comes with both great headaches and long delays.<\/p>\n<p>We can instead focus on enabling more and faster data innovation, since our data, setup and installation of the environment and computations are entirely managed by GCP.<\/p>\n<p>To start a new notebook instance, in you cloud console, navigate to <em>AI platform -&gt; Notebooks<\/em> and start a new notebook.<br \/>\nFor our purposes we will use a Standard Python2 and 3 notebook with default settings.<\/p>\n<p>When the instance is ready click the link to open JupyterLab.<\/p>\n<p>Data exploration is an iterative process where you make multiple passes over the data, making new findings as you go. This process is hard to show in an article, so for the ones of you who are interested in how I came to the conclusions ahead, here is a gist with the notebook where I explored the data.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/Simon-Lind-glitch\/bf3d99b1b6d32b19a93ee436bd0f1b31.js\"><\/script><\/p>\n<p>What i found was that the data had two main issues:<\/p>\n<ul>\n<li>Duplicate data<\/li>\n<li>Gaps in our timeline<\/li>\n<\/ul>\n<p>For any application to provide meaningful and accurate results, issues like this needs to be addressed.<\/p>\n<h6>Addressing the data issues<\/h6>\n<p>We can use our notebook environment to quickly develop and test a Dataflow pipeline which addresses these two issues. The final step of our pipeline will load the data to a new BigQuery Table, making the clean data available for other use cases and even further reducing the barriers to more data innovation.<\/p>\n<p>Dataflow is a managed service for executing a wide range of data transformations. In streams or batch. Dataflow allows us to focus on writing data transformations and not have to worry about infrastructure scaling. It also allows us to stay in the cloud for data transformation. Find out more <a href=\"https:\/\/cloud.google.com\/dataflow\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>First we need a new notebook instance with Dataflow support. The notebook provides us with an interactive environment, where we can work with the real data while developing the pipeline.<\/p>\n<p>In you cloud console, navigate to <em>Dataflow -&gt; Notebooks<\/em> and start a new notebook. This notebook is based on an image which contains all the dependencies for interactive Dataflow development.<\/p>\n<p>Dataflow needs to store some intermediate results somewhere, so we also need to create a new bucket in google storage for this purpose. When we have created the bucket for intermediate results, we can start building our pipeline. I called mine <em>predictly-beam-temp<\/em>.<\/p>\n<p>The Dataflow API available in the notebook provides us with two very useful functions. <em>Show<\/em> and <em>Graph<\/em>. The first allows us to have a look at the intermediate results of our transformations. The second draws a graph o the entire pipeline, giving us a good understanding of what we are building.<\/p>\n<p>This allows us to quickly develop a pipeline which addresses the issues we identified in the previous article.<\/p>\n<p>Below is a gist showing a notebook, with comments on how each issue is solved using a combination of BigQuery and Dataflow.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/Simon-Lind-glitch\/c4eaee1df834091bbcdbfbcd4e806ba7.js\"><\/script><\/p>\n<p>The last cell in the notebook starts a Dataflow job which you can view in the GCP dashboard.<\/p>\n<p><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27261%27%20height%3D%27660%27%20viewBox%3D%270%200%20261%20660%27%3E%3Crect%20width%3D%27261%27%20height%3D%27660%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/MLonGCP_del2-1.png\" alt=\"GCP Dashboard\"><\/p>\n<h6>Summary<\/h6>\n<p>In this article I have demonstrated how you can use interactive environments provided by Jupyter notebooks on GCP for data exploration and for building and testing Dataflow pipelines on GCP. This allowed us to easily explore our data and identify issues, and quickly develop a data transformation pipeline which addressed those issues. By working in this way, we made a new and clean dataset available for our next step, Modeling.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Second part in our series on ML at GCP. How to get to know your data.<\/p>\n","protected":false},"author":7,"featured_media":11465,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"cybocfi_hide_featured_image":"","footnotes":""},"categories":[110,106,114,115],"tags":[],"class_list":["post-11654","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-en","category-google-cloud-en","category-jupyter-en","category-python-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly\" \/>\n<meta property=\"og:description\" content=\"Second part in our series on ML at GCP. How to get to know your data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\" \/>\n<meta property=\"og:site_name\" content=\"Predictly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/predictly.se\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-21T07:30:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-08T11:46:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1429\" \/>\n\t<meta property=\"og:image:height\" content=\"888\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Simon Lind\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@predictly_se\" \/>\n<meta name=\"twitter:site\" content=\"@predictly_se\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Lind\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\"},\"author\":{\"name\":\"Simon Lind\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/036b901e4ff56b4d3d81b0b0d720315a\"},\"headline\":\"Getting started: Machine Learning at GCP &#8211; Part 2: Making data clean and useful\",\"datePublished\":\"2022-09-21T07:30:35+00:00\",\"dateModified\":\"2024-05-08T11:46:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\"},\"wordCount\":735,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/predictly.se\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png\",\"articleSection\":[\"Data\",\"Google Cloud\",\"Jupyter\",\"Python\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\",\"url\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\",\"name\":\"Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly\",\"isPartOf\":{\"@id\":\"https:\/\/predictly.se\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png\",\"datePublished\":\"2022-09-21T07:30:35+00:00\",\"dateModified\":\"2024-05-08T11:46:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage\",\"url\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png\",\"contentUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png\",\"width\":1429,\"height\":888},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/predictly.se\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data\",\"item\":\"https:\/\/predictly.se\/en\/insikter\/data-en\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Getting started: Machine Learning at GCP &#8211; Part 2: Making data clean and useful\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/predictly.se\/en\/#website\",\"url\":\"https:\/\/predictly.se\/en\/\",\"name\":\"Predictly\",\"description\":\"Professional IT services\",\"publisher\":{\"@id\":\"https:\/\/predictly.se\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/predictly.se\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/predictly.se\/en\/#organization\",\"name\":\"Predictly\",\"url\":\"https:\/\/predictly.se\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg\",\"contentUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg\",\"width\":532,\"height\":96,\"caption\":\"Predictly\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/predictly.se\",\"https:\/\/x.com\/predictly_se\",\"https:\/\/www.linkedin.com\/company\/predictly\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/036b901e4ff56b4d3d81b0b0d720315a\",\"name\":\"Simon Lind\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4002a927f066edcc5d52d440c9add6933e6a177a60c830e67ae732aac791de4d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4002a927f066edcc5d52d440c9add6933e6a177a60c830e67ae732aac791de4d?s=96&d=mm&r=g\",\"caption\":\"Simon Lind\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/","og_locale":"en_US","og_type":"article","og_title":"Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly","og_description":"Second part in our series on ML at GCP. How to get to know your data.","og_url":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/","og_site_name":"Predictly","article_publisher":"https:\/\/www.facebook.com\/predictly.se","article_published_time":"2022-09-21T07:30:35+00:00","article_modified_time":"2024-05-08T11:46:41+00:00","og_image":[{"width":1429,"height":888,"url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png","type":"image\/png"}],"author":"Simon Lind","twitter_card":"summary_large_image","twitter_creator":"@predictly_se","twitter_site":"@predictly_se","twitter_misc":{"Written by":"Simon Lind","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#article","isPartOf":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/"},"author":{"name":"Simon Lind","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/036b901e4ff56b4d3d81b0b0d720315a"},"headline":"Getting started: Machine Learning at GCP &#8211; Part 2: Making data clean and useful","datePublished":"2022-09-21T07:30:35+00:00","dateModified":"2024-05-08T11:46:41+00:00","mainEntityOfPage":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/"},"wordCount":735,"commentCount":0,"publisher":{"@id":"https:\/\/predictly.se\/en\/#organization"},"image":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage"},"thumbnailUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png","articleSection":["Data","Google Cloud","Jupyter","Python"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/","url":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/","name":"Getting started: Machine Learning at GCP - Part 2: Making data clean and useful &#8211; Predictly","isPartOf":{"@id":"https:\/\/predictly.se\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage"},"image":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage"},"thumbnailUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png","datePublished":"2022-09-21T07:30:35+00:00","dateModified":"2024-05-08T11:46:41+00:00","breadcrumb":{"@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#primaryimage","url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png","contentUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/bitcoin-1.png","width":1429,"height":888},{"@type":"BreadcrumbList","@id":"https:\/\/predictly.se\/en\/getting-started-machine-learning-at-gcp-part-2-making-data-clean-and-useful\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/predictly.se\/en\/"},{"@type":"ListItem","position":2,"name":"Data","item":"https:\/\/predictly.se\/en\/insikter\/data-en\/"},{"@type":"ListItem","position":3,"name":"Getting started: Machine Learning at GCP &#8211; Part 2: Making data clean and useful"}]},{"@type":"WebSite","@id":"https:\/\/predictly.se\/en\/#website","url":"https:\/\/predictly.se\/en\/","name":"Predictly","description":"Professional IT services","publisher":{"@id":"https:\/\/predictly.se\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/predictly.se\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/predictly.se\/en\/#organization","name":"Predictly","url":"https:\/\/predictly.se\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/","url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg","contentUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg","width":532,"height":96,"caption":"Predictly"},"image":{"@id":"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/predictly.se","https:\/\/x.com\/predictly_se","https:\/\/www.linkedin.com\/company\/predictly\/"]},{"@type":"Person","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/036b901e4ff56b4d3d81b0b0d720315a","name":"Simon Lind","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4002a927f066edcc5d52d440c9add6933e6a177a60c830e67ae732aac791de4d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4002a927f066edcc5d52d440c9add6933e6a177a60c830e67ae732aac791de4d?s=96&d=mm&r=g","caption":"Simon Lind"}}]}},"_links":{"self":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/comments?post=11654"}],"version-history":[{"count":1,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11654\/revisions"}],"predecessor-version":[{"id":11666,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11654\/revisions\/11666"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/media\/11465"}],"wp:attachment":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/media?parent=11654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/categories?post=11654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/tags?post=11654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}