{"id":4800,"date":"2022-03-31T23:25:57","date_gmt":"2022-03-31T14:25:57","guid":{"rendered":"https:\/\/obenkyolab.com\/?p=4800"},"modified":"2022-03-31T23:25:57","modified_gmt":"2022-03-31T14:25:57","slug":"%e3%80%90keras%e3%80%91%e3%82%aa%e3%83%bc%e3%83%88%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%80%e3%82%92%e7%94%a8%e3%81%84%e3%81%9f%e6%99%82%e7%b3%bb%e5%88%97%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae","status":"publish","type":"post","link":"https:\/\/obenkyolab.com\/?p=4800","title":{"rendered":"\u3010keras\u3011\u30aa\u30fc\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u3092\u7528\u3044\u305f\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u306e\u7570\u5e38\u691c\u77e5\u3092\u8a66\u3059"},"content":{"rendered":"\n<p>\u6df1\u5c64\u5b66\u7fd2\u3092\u7c21\u5358\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308bkeras\u3092\u4f7f\u7528\u3057\u3066\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u306e\u7570\u5e38\u691c\u77e5\u306b\u3064\u3044\u3066\u52c9\u5f37\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E7%92%B0%E5%A2%83\" >\u74b0\u5883<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF\" >\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E7%95%B0%E5%B8%B8%E6%A4%9C%E7%9F%A5%E3%81%AE%E6%B5%81%E3%82%8C\" >\u7570\u5e38\u691c\u77e5\u306e\u6d41\u308c<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E6%AD%A3%E5%B8%B8%E3%83%BB%E7%95%B0%E5%B8%B8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%94%A8%E6%84%8F\" >\u6b63\u5e38\u30fb\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u7528\u610f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E5%AD%A6%E7%BF%92%E7%94%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%BA%96%E5%82%99\" >\u5b66\u7fd2\u7528\u30c7\u30fc\u30bf\u306e\u6e96\u5099<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E5%AE%9A%E7%BE%A9\" >\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E7%95%B0%E5%B8%B8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A4%9C%E5%87%BA\" >\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u691c\u51fa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E7%95%B0%E5%B8%B8%E6%A4%9C%E5%87%BA%E7%B5%90%E6%9E%9C%E3%81%AE%E7%A2%BA%E8%AA%8D\" >\u7570\u5e38\u691c\u51fa\u7d50\u679c\u306e\u78ba\u8a8d<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/obenkyolab.com\/?p=4800\/#%E3%81%BE%E3%81%A8%E3%82%81\" >\u307e\u3068\u3081<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%92%B0%E5%A2%83\"><\/span>\u74b0\u5883<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u3053\u3061\u3089\u3067\u69cb\u7bc9\u3057\u305fkeras\u306e\u74b0\u5883\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/obenkyolab.com\/?p=2631\">Windows10\u306bKeras\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b \u2013 IT Learning (obenkyolab.com)<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF\"><\/span>\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>kaggle\u306b\u63b2\u8f09\u3055\u308c\u3066\u3044\u308b\u4ee5\u4e0b\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3055\u305b\u3066\u3082\u3089\u3044\u307e\u3059\u3002OpenDatabase\u3068\u3057\u3066\u516c\u958b\u3055\u308c\u3066\u3044\u3066\u975e\u5e38\u306b\u3042\u308a\u304c\u305f\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/www.kaggle.com\/datasets\/krish525\/open-time-series-data\">Open Time Series Dataset | Kaggle<\/a><\/p>\n\n\n\n<p>\u3053\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u4e2d\u306b\u306f\u6b21\u306e5\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Finance<\/li><li>Meteorology<\/li><li>Physics<\/li><li>Production<\/li><li>Sales<\/li><\/ol>\n\n\n\n<p>\u305d\u306e\u4e2d\u304b\u3089Physics\u306e\u4e2d\u306b\u3042\u308b\u5730\u9707\u8a08\u306e\u8a08\u6e2c\u30c7\u30fc\u30bf\u3092\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Seismograph vertical acceleration nmsqsec of the Kobe earthquake recor.csv<\/p><\/blockquote>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092kaggle\u306e\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%95%B0%E5%B8%B8%E6%A4%9C%E7%9F%A5%E3%81%AE%E6%B5%81%E3%82%8C\"><\/span>\u7570\u5e38\u691c\u77e5\u306e\u6d41\u308c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4eca\u56de\u306f\u5730\u9707\u8a08\u306e\u6e2c\u5b9a\u30c7\u30fc\u30bf\u306e\u4e2d\u3067\u300c\u7570\u5e38\u3068\u601d\u308f\u308c\u308b\u500b\u6240\u3092\u8d64\u304f\u8868\u793a\u3059\u308b\u300d\u3068\u3044\u3046\u3053\u3068\u3092\u8a66\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306a\u6d41\u308c\u3067\u9032\u3081\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\u30c7\u30fc\u30bf\u306e\u4e2d\u3067\u6b63\u5e38\u3068\u601d\u308f\u308c\u308b\u500b\u6240\u3068\u7570\u5e38\u3068\u601d\u308f\u308c\u308b\u500b\u6240\u3092\u53d6\u308a\u51fa\u3059<\/li><li>\u6b63\u5e38\u30c7\u30fc\u30bf\u3067\u6df1\u5c64\u5b66\u7fd2\u3092\u884c\u3044\u30e2\u30c7\u30eb\u3092\u4f5c\u308b<\/li><li>\u7570\u5e38\u3092\u542b\u3080\u30c7\u30fc\u30bf\u3092\u30e2\u30c7\u30eb\u306b\u5165\u529b\u3057\u3066\u691c\u77e5\u3055\u305b\u308b<\/li><li>\u30d7\u30ed\u30c3\u30c8\u3059\u308b<\/li><\/ol>\n\n\n\n<p>\u307e\u305f\u3001\u4eca\u56de\u30aa\u30fc\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u3092\u52c9\u5f37\u3059\u308b\u306b\u3042\u305f\u308a\u3001\u4ee5\u4e0b\u306ekeras\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30b3\u30fc\u30c9\u3092\u53c2\u8003\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/keras.io\/examples\/timeseries\/timeseries_anomaly_detection\/\">https:\/\/keras.io\/examples\/timeseries\/timeseries_anomaly_detection\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%AD%A3%E5%B8%B8%E3%83%BB%E7%95%B0%E5%B8%B8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%94%A8%E6%84%8F\"><\/span>\u6b63\u5e38\u30fb\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u7528\u610f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u307e\u305a\u306f\u4eca\u56de\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u3092pandas\u3067\u8aad\u307f\u8fbc\u3093\u3067\u78ba\u8a8d\u3057\u3066\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import pandas as pd\nfrom matplotlib import pyplot as plt\ndf = pd.read_csv(&#39;Seismograph vertical acceleration nmsqsec of the Kobe earthquake recor.csv&#39; ,parse_dates=True)\ndf.columns = [&#39;times&#39;,&#39;x&#39;]\ndf.set_index(&#39;times&#39;, inplace = True)\nfig, ax = plt.subplots()\ndf.plot(legend=False, ax=ax)\nplt.show()<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"409\" height=\"259\" src=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-4.png\" alt=\"\" class=\"wp-image-4801\" srcset=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-4.png 409w, https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-4-300x190.png 300w\" sizes=\"auto, (max-width: 409px) 100vw, 409px\" \/><\/figure>\n\n\n\n<p>\u898b\u305f\u611f\u3058\u3001times\u304c1000\u304f\u3089\u3044\u307e\u3067\u306f\u632f\u5e45\u304c\u843d\u3061\u7740\u3044\u3066\u3044\u3066\u30011500-2500\u306b\u5927\u304d\u304f\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3002<\/p>\n\n\n\n<p>1500-2500\u306e\u9593\u306b\u672c\u5f53\u306b\u73fe\u5b9f\u3068\u3057\u3066\u7570\u5e38\u304c\u767a\u751f\u3057\u305f\u306e\u304b\u3069\u3046\u304b\u306f\u308f\u304b\u308a\u307e\u305b\u3093\u304c\u3001\u4eca\u56de\u306f\u4eee\u306btimes\u304c0-1000\u306e\u671f\u9593\u306f\u6b63\u5e38\u30671500-2500\u306f\u7570\u5e38\u3068\u3044\u3046\u98a8\u306b\u8003\u3048\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u306e\u305f\u3081\u3001\u5b66\u7fd2\u30c7\u30fc\u30bf\u3068\u3057\u30660-1500\u306e\u671f\u9593\u3092\u53d6\u308a\u51fa\u3057\u5b66\u7fd2\u30c7\u30fc\u30bf\u3068\u3057\u30011501-3000\u306e \u533a\u9593\u3092\u691c\u8a3c\u7528\u306e\u7570\u5e38\u30c7\u30fc\u30bf\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x = df[0:1500]\nx_ano = df[1500:3000]<\/code><\/pre><\/div>\n\n\n\n<p>\u305d\u308c\u305e\u308c\u30d7\u30ed\u30c3\u30c8\u3057\u3066\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002Y\u8ef8\u306e\u30b9\u30b1\u30fc\u30eb\u306f-40000~45000\u306e\u7bc4\u56f2\u3067\u540c\u3058\u306b\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u6b63\u5e38<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x.plot(legend=False)\nplt.ylim([-40000, 45000])<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"390\" height=\"258\" src=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-5.png\" alt=\"\" class=\"wp-image-4804\" srcset=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-5.png 390w, https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-5-300x198.png 300w\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" \/><\/figure>\n\n\n\n<p><strong>\u7570\u5e38<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x_ano.plot(legend=False)\nplt.ylim([-40000, 45000])<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"391\" height=\"261\" src=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-6.png\" alt=\"\" class=\"wp-image-4805\" srcset=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-6.png 391w, https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-6-300x200.png 300w\" sizes=\"auto, (max-width: 391px) 100vw, 391px\" \/><figcaption>\u6b63\u5e38\u3068\u7570\u5e38\u3067\u632f\u5e45\u306e\u9055\u3044\u304c\u898b\u305f\u76ee\u3067\u3082\u3088\u304f\u308f\u304b\u308a\u307e\u3057\u305f\u3002<\/figcaption><\/figure>\n\n\n\n<p>\u3053\u3053\u3067\u3001\u5b66\u7fd2\u306b\u4f7f\u7528\u3059\u308b\u6b63\u5e38\u30c7\u30fc\u30bf\u3092\u6a19\u6e96\u5316\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u5f8c\u307b\u3069\u691c\u8a3c\u3067\u4f7f\u7528\u3059\u308b\u7570\u5e38\u30c7\u30fc\u30bf\u306b\u3064\u3044\u3066\u3082\u4f75\u305b\u3066\u6a19\u6e96\u5316\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u3053\u3053\u3067\u30dd\u30a4\u30f3\u30c8\u3068\u3057\u3066\u306f\u3001\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u6a19\u6e96\u5316\u306e\u969b\u306b\u6b63\u5e38\u30c7\u30fc\u30bf\u306e\u5e73\u5747\u3068\u6a19\u6e96\u504f\u5dee\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7570\u5e38\u30c7\u30fc\u30bf\u306b\u3064\u3044\u3066\u3001\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u5e73\u5747\u3068\u6a19\u6e96\u504f\u5dee\u3092\u4f7f\u7528\u3057\u3066\u3057\u307e\u3046\u3068\u3001\u6b63\u5e38\u6642\u3068\u306e\u6bd4\u8f03\u3067\u8003\u3048\u305f\u5834\u5408\u306b\u5e73\u7b49\u306b\u8a55\u4fa1\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u554f\u984c\u304c\u3042\u308b\u305f\u3081\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>#\u6a19\u6e96\u5316\nx_norm = (x - x.mean())\/x.std()\nx_ano_norm = (x_ano - x.mean())\/x.std()<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AD%A6%E7%BF%92%E7%94%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%BA%96%E5%82%99\"><\/span>\u5b66\u7fd2\u7528\u30c7\u30fc\u30bf\u306e\u6e96\u5099<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u6b21\u306b\u30c7\u30fc\u30bf\u309250\u70b9\u30921\u305a\u3064\u30b9\u30e9\u30a4\u30c9\u3055\u305b\u308b\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002t_steps\u304c\u30e2\u30c7\u30eb\u306b\u5b66\u7fd2\u3055\u305b\u308b\u969b\u306e\u5165\u529b\u306e\u6b21\u5143\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u524d\u8ff0\u306ekeras\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u53c2\u8003\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u30b9\u30c6\u30c3\u30d7\u6570\u306a\u3069\u306f\u9069\u5f53\u306b\u6c7a\u3081\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import numpy as np\nt_steps = 50\ndef create_sequences(df):\n    x = []\n    for i in range(0, len(df) - t_steps + 1):\n        x.append(df[i:i + t_steps].to_numpy())\n    x_out = np.array(x)\n    return x_out<\/code><\/pre><\/div>\n\n\n\n<p>\u5b9a\u7fa9\u3057\u305f\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b66\u7fd2\u30c7\u30fc\u30bf\u306b\u5bfe\u3057\u3066\u30ea\u30b9\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x_train = create_sequences(df_normalized)\nx_train.shape<\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">(1451, 50, 1)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E5%AE%9A%E7%BE%A9\"><\/span>\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5b66\u7fd2\u30c7\u30fc\u30bf\u306eshape\u306b\u5408\u308f\u305b\u305f\u6df1\u5c64\u5b66\u7fd2\u30e2\u30c7\u30eb\u306elayer\u3092keras\u306eSequential\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u30dd\u30a4\u30f3\u30c8\u3068\u3057\u3066\u306f\u30aa\u30fc\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u3068\u3059\u308b\u305f\u3081\u3001\u7573\u307f\u8fbc\u307f\u3067\u30b5\u30a4\u30ba\u3092\u5909\u66f4\u3057\u305f\u306e\u3061\u3001\u6700\u7d42\u7684\u306bConv1DTranspose\u3067\u540c\u3058\u30b5\u30a4\u30ba\u306b\u5fa9\u5143\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u6700\u9069\u5316\u306b\u306fAdam\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>model =keras.initializers.Initializer()\nmodel = keras.Sequential(\n    [\n        layers.Input(shape=(x_train.shape[1], x_train.shape[2])),\n        layers.Conv1D(\n            filters=32, kernel_size=7, padding=&quot;same&quot;, strides=1, activation=&quot;relu&quot;\n        ),\n        layers.Dropout(rate=0.2),\n        layers.Conv1D(\n            filters=16, kernel_size=7, padding=&quot;same&quot;, strides=1, activation=&quot;relu&quot;\n        ),\n        layers.Conv1DTranspose(\n            filters=16, kernel_size=7, padding=&quot;same&quot;, strides=1, activation=&quot;relu&quot;\n        ),\n        layers.Dropout(rate=0.2),\n        layers.Conv1DTranspose(\n            filters=32, kernel_size=7, padding=&quot;same&quot;, strides=1, activation=&quot;relu&quot;\n        ),\n        layers.Conv1DTranspose(filters=1, kernel_size=7, padding=&quot;same&quot;),\n    ]\n)\nmodel.compile(optimizer=keras.optimizers.Adam(learning_rate=0.001), loss=&quot;mse&quot;)\nmodel.summary()<\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">Model: \"sequential\"\n_________________________________________________________________\n Layer (type)                Output Shape              Param #   \n=================================================================\n conv1d (Conv1D)             (None, 50, 32)            256       \n                                                                 \n dropout (Dropout)           (None, 50, 32)            0         \n                                                                 \n conv1d_1 (Conv1D)           (None, 50, 16)            3600      \n                                                                 \n conv1d_transpose (Conv1DTra  (None, 50, 16)           1808      \n nspose)                                                         \n                                                                 \n dropout_1 (Dropout)         (None, 50, 16)            0         \n                                                                 \n conv1d_transpose_1 (Conv1DT  (None, 50, 32)           3616      \n ranspose)                                                       \n                                                                 \n conv1d_transpose_2 (Conv1DT  (None, 50, 1)            225       \n ranspose)                                                       \n                                                                 \n=================================================================\nTotal params: 9,505\nTrainable params: 9,505\nNon-trainable params: 0<\/pre>\n\n\n\n<p>\u3044\u3088\u3044\u3088\u3001\u4f5c\u6210\u3057\u305f\u30e2\u30c7\u30eb\u306b\u5bfe\u3057\u3066\u3001\u5b66\u7fd2\u7528\u30c7\u30fc\u30bf\u3092fit\u3057\u3066\u5b66\u7fd2\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>history = model.fit(\n    x_train,\n    x_train,\n    epochs=200,\n    batch_size=100,\n    validation_split=0.1,\n    callbacks=[\n        keras.callbacks.EarlyStopping(monitor=&quot;val_loss&quot;, patience=5, mode=&quot;min&quot;)\n    ],\n)<\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">...\nEpoch 30\/200\n14\/14 [==============================] - 0s 21ms\/step - loss: 0.0273 - val_loss: 0.0182\nEpoch 31\/200\n14\/14 [==============================] - 0s 24ms\/step - loss: 0.0266 - val_loss: 0.0183\nEpoch 32\/200\n14\/14 [==============================] - 0s 20ms\/step - loss: 0.0259 - val_loss: 0.0203<\/pre>\n\n\n\n<p>\u5b66\u7fd2\u66f2\u7dda\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>plt.plot(history.history[&quot;loss&quot;], label=&quot;Training Loss&quot;)\nplt.plot(history.history[&quot;val_loss&quot;], label=&quot;Validation Loss&quot;)\nplt.legend()\nplt.show()<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"377\" height=\"248\" src=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-7.png\" alt=\"\" class=\"wp-image-4810\" srcset=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-7.png 377w, https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-7-300x197.png 300w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/figure>\n\n\n\n<p>Validation\u30c7\u30fc\u30bf\u306b\u5bfe\u3059\u308b\u640d\u5931\u3082\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30c7\u30fc\u30bf\u306b\u5bfe\u3057\u3066\u4e0b\u304c\u3063\u3066\u3044\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u826f\u3055\u305d\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%95%B0%E5%B8%B8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A4%9C%E5%87%BA\"><\/span>\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u691c\u51fa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u3053\u3053\u304b\u3089\u4f5c\u6210\u3057\u305f\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u7570\u5e38\u30c7\u30fc\u30bf\u306e\u691c\u51fa\u3092\u884c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30e2\u30c7\u30eb\u306b\u5b66\u7fd2\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3001\u4e88\u6e2c\u5024\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u4eca\u56de\u306f\u30aa\u30fc\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u305f\u3081\u3001\u5165\u529b\u306b\u5bfe\u3057\u3066\u4e88\u6e2c\u5024\u3082\u540c\u3058\u3082\u306e\u304c\u51fa\u3066\u304f\u308b\u3088\u3046\u306a\u60f3\u5b9a\u3067\u3059\u3002\u3053\u306e\u4e88\u6e2c\u5024\u306b\u5bfe\u3057\u3066\u3001\u5b9f\u969b\u306e\u5165\u529b\u5024\u3068\u306e\u7d76\u5bfe\u8aa4\u5dee\u5e73\u5747\u3092\u8a08\u7b97\u3057\u3001\u7d76\u5bfe\u8aa4\u5dee\u5e73\u5747\u306e\u6700\u5927\u5024\u3092\u7570\u5e38\u5224\u5b9a\u306e\u95be\u5024\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x_train_pred = model.predict(x_train)\ntrain_mae_loss = np.mean(np.abs(x_train_pred - x_train), axis=1)\nthreshold = np.max(train_mae_loss)<\/code><\/pre><\/div>\n\n\n\n<p>\u6b21\u306b\u3001\u7570\u5e38\u6ce2\u5f62\u306e\u5165\u3063\u305f\u691c\u8a3c\u7528\u306e\u30c7\u30fc\u30bf\u3092\u30e2\u30c7\u30eb\u306e\u5165\u529b\u306b\u5408\u3046\u3088\u3046\u5b66\u7fd2\u30c7\u30fc\u30bf\u3068\u540c\u69d8\u306b\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u7528\u3044\u3066\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u4e88\u6e2c\u30e2\u30c7\u30eb\u306b\u5165\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5f97\u3089\u308c\u305f\u7d50\u679c\u3068\u5165\u529b\u306e\u5024\u306b\u304a\u3051\u308b\u7d76\u5bfe\u8aa4\u5dee\u5e73\u5747\u3092\u8a08\u7b97\u3057\u3001\u7d76\u5bfe\u8aa4\u5dee\u5e73\u5747\u304c\u95be\u5024\u7570\u5e38\u306b\u306a\u3063\u3066\u3044\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u62bd\u51fa\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>x_test = create_sequences(x_ano_norm)\nx_test_pred = model.predict(x_test)\ntest_mae_loss = np.mean(np.abs(x_test_pred - x_test), axis=1)\ntest_mae_loss = test_mae_loss.reshape((-1))\nanomalies = test_mae_loss &gt; threshold<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%95%B0%E5%B8%B8%E6%A4%9C%E5%87%BA%E7%B5%90%E6%9E%9C%E3%81%AE%E7%A2%BA%E8%AA%8D\"><\/span>\u7570\u5e38\u691c\u51fa\u7d50\u679c\u306e\u78ba\u8a8d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u7570\u5e38\u3068\u5224\u5b9a\u3055\u308c\u305f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u542b\u3093\u3067\u3044\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u8d64\u8272\u3067\u30d7\u30ed\u30c3\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>anomalous_data_indices = []\nfor data_idx in range(t_steps - 1, len(x_ano_norm) - t_steps + 1):\n    if np.all(anomalies[data_idx - t_steps + 1 : data_idx]):\n        anomalous_data_indices.append(data_idx)\n        \ndf_subset = x_ano.iloc[anomalous_data_indices]\nfig, ax = plt.subplots()\ndf.plot(legend=False, ax=ax)\ndf_subset.plot(legend=False, ax=ax, color=&quot;r&quot;)\nplt.show()<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-8.png\" alt=\"\" class=\"wp-image-4812\" width=\"464\" height=\"299\" srcset=\"https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-8.png 422w, https:\/\/obenkyolab.com\/wp-content\/uploads\/2022\/03\/image-8-300x193.png 300w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/figure>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u632f\u5e45\u304c\u5927\u304d\u304f\u306a\u3063\u3066\u3044\u308b\u7b87\u6240\u304c\u8d64\u8272\u3067\u5224\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%81%BE%E3%81%A8%E3%82%81\"><\/span>\u307e\u3068\u3081<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4eca\u56de\u306fkeras\u306e\u30b5\u30a4\u30c8\u306b\u3042\u308b\u30aa\u30fc\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u53c2\u8003\u306b\u3057\u3066\u3001Kaggle\u306e\u30aa\u30fc\u30d7\u30f3\u30c7\u30fc\u30bf\u3092\u5bfe\u8c61\u306b\u7570\u5e38\u691c\u77e5\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3064\u3044\u3066\u306f\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3082\u306e\u3092\u305d\u306e\u307e\u307e\u5229\u7528\u3057\u305f\u90e8\u5206\u3082\u3042\u308a\u307e\u3057\u305f\u304c\u3001\u305d\u308c\u306a\u308a\u306b\u691c\u51fa\u3067\u304d\u3066\u3044\u308b\u3088\u3046\u306a\u611f\u3058\u3067\u3057\u305f\u3002\u4eca\u5f8c\u3082keras\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u3044\u308d\u3044\u308d\u3068\u8a66\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6df1\u5c64\u5b66\u7fd2\u3092\u7c21\u5358\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308bkeras\u3092\u4f7f\u7528\u3057\u3066\u6642\u7cfb\u5217\u30c7\u30fc\u30bf&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1218,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"ja","_original_post":"https:\/\/obenkyolab.com\/?p=4800","footnotes":""},"categories":[7,53],"tags":[],"class_list":["post-4800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-53","ja"],"_links":{"self":[{"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/posts\/4800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4800"}],"version-history":[{"count":8,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/posts\/4800\/revisions"}],"predecessor-version":[{"id":4813,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/posts\/4800\/revisions\/4813"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=\/wp\/v2\/media\/1218"}],"wp:attachment":[{"href":"https:\/\/obenkyolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/obenkyolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}