{"id":50804,"date":"2022-07-01T00:00:00","date_gmt":"2022-07-01T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/"},"modified":"2025-11-14T07:55:27","modified_gmt":"2025-11-14T15:55:27","slug":"predicting-red-wine-quality-using-tensorflowjs-and-griddb","status":"publish","type":"post","link":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/","title":{"rendered":"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c"},"content":{"rendered":"<h2>\u306f\u3058\u3081\u306b<\/h2>\n<p>\u4eca\u56de\u306f\u3001TensorFlowJS\u3068GridDB\u3092\u4f7f\u3063\u3066\u30e2\u30c7\u30eb\u3092\u5b66\u7fd2\u3057\u3001\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u3092\u4e88\u6e2c\u3057\u307e\u3059\u3002\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u4ee5\u4e0b\u306eNodeJS\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<ul>\n<li>TensorflowJS &#8211; \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n<li>DanfoJS &#8211; DataFrame\u306e\u64cd\u4f5c\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"https:\/\/github.com\/griddbnet\/Blogs\/tree\/main\/Predicting%20RedWine%20Quality%20Using%20TensorflowJS%20and%20GridDB\"> \u8a18\u4e8b\u306e\u5168\u30b3\u30fc\u30c9\u306f\u3053\u3061\u3089 <\/a>\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30c7\u30fc\u30bf\u30b5\u30a4\u30a8\u30f3\u30b9\u3084ML\u306e\u5b9f\u9a13\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u306fNode Notebooks\u3092\u4f7f\u3063\u305f\u4f5c\u696d\u304c\u4fbf\u5229\u3067\u3059\u3002Visual Studio Code\u306fNode Notebooks\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u7d20\u6674\u3089\u3057\u3044\u30a8\u30c7\u30a3\u30bf\u306a\u306e\u3067\u3001\u3053\u306e\u8a18\u4e8b\u3067\u306f\u305d\u308c\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002\u6ce8\uff1a Danfo JS \u3068 Tensorflow JS \u306f\u6700\u4f4e\u3067\u3082node\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 12 \u304c\u5fc5\u8981\u3067\u3001griddb \u306fnode\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 10 \u3067\u52d5\u304d\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">const dfd = require(\"danfojs-node\")\nvar fs     = require('fs');\nconst tf = dfd.tensorflow\nconst tfvis = require('@tensorflow\/tfjs-vis')<\/code><\/pre>\n<\/div>\n<p>\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306f\u3001<a href=\"https:\/\/www.kaggle.com\/datasets\/midouazerty\/redwine\">This Kaggle Dataset<\/a>\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n<p>\u307e\u305a\u306f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092CSV\u3067\u8aad\u307f\u8fbc\u307f\u3001GridDB\u306b\u633f\u5165\u3059\u308b\u3068\u3053\u308d\u304b\u3089\u59cb\u3081\u307e\u3059\u3002<\/p>\n<h2>GridDB\u306b\u30c7\u30fc\u30bf\u3092\u30ed\u30fc\u30c9\u3057\u3001GridDB\u304b\u3089\u30c7\u30fc\u30bf\u3092\u30d5\u30a7\u30c3\u30c1\u3059\u308b<\/h2>\n<p>\u307e\u305a\u3001GridDB \u30b5\u30fc\u30d0\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u540c\u3058\u30de\u30b7\u30f3(localhost)\u4e0a\u3067\u52d5\u4f5c\u3055\u305b\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">var griddb = require('griddb_node');\n\nconst createCsvWriter = require('csv-writer').createObjectCsvWriter;\nconst csvWriter = createCsvWriter({\n  path: 'out.csv',\n  header: [\n    {id: \"fixed acidity\", title:\"fixed acidity\"}, \n    {id: \"volatile acidity\", title:\"volatile acidity\"}, \n    {id: \"citric acid\", title:\"citric acid\"}, \n    {id: \"residual sugar\", title:\"residual sugar\"}, \n    {id: \"chlorides\", title:\"chlorides\"}, \n    {id: \"free sulfur dioxide\", title:\"free sulfur dioxide\"}, \n    {id: \"total sulfur dioxide\" , title:\"total sulfur dioxide\"}, \n    {id: \"density\", title:\"density\"}, \n    {id: \"pH\", title:\"pH\"}, \n    {id: \"sulphates\", title:\"sulphates\"}, \n    {id: \"alcohol\", title:\"alcohol\"}, \n    {id: \"quality\", title:\"quality\"} \n  ]\n});\n\nconst factory = griddb.StoreFactory.getInstance();\nconst store = factory.getStore({\n    \"host\": '239.0.0.1',\n    \"port\": 31999,\n    \"clusterName\": \"defaultCluster\",\n    \"username\": \"admin\",\n    \"password\": \"admin\"\n});\n\/\/ For connecting to the GridDB Server we have to make containers and specify the schema.\nconst conInfo = new griddb.ContainerInfo({\n    'name': \"redwinequality\",\n    'columnInfoList': [\n      [\"name\", griddb.Type.STRING],\n      [\"fixedacidity\", griddb.Type.DOUBLE],\n      [\"volatileacidity\", griddb.Type.DOUBLE],\n      [\"citricacid\", griddb.Type.DOUBLE],\n      [\"residualsugar\", griddb.Type.DOUBLE],\n      [\"chlorides\", griddb.Type.DOUBLE],\n      [\"freesulfurdioxide\", griddb.Type.INTEGER],\n      [\"totalsulfurdioxide\", griddb.Type.INTEGER],\n      [\"density\", griddb.Type.DOUBLE],\n      [\"pH\", griddb.Type.DOUBLE],\n      [\"sulphates\", griddb.Type.DOUBLE],\n      [\"alcohol\", griddb.Type.DOUBLE],\n      [\"quality\", griddb.Type.INTEGER],\n    ],\n    'type': griddb.ContainerType.COLLECTION, 'rowKey': true\n});\n\n\n\/\/ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\nconst csv = require('csv-parser');\n\nconst fs = require('fs');\nvar lst = []\nvar lst2 = []\nvar i =0;\nfs.createReadStream('.\/dataset\/winequality-red.csv')\n  .pipe(csv())\n  .on('data', (row) => {\n    lst.push(row);\n  })\n  .on('end', () => {\n\n    var container;\n    var idx = 0;\n    \n    for(let i=0;i&lt;lst.length;i++){\n        lst[i][\"fixed acidity\"] = parseFloat(lst[i][\"fixed acidity\"])\n\n        lst[i]['volatile acidity'] = parseFloat(lst[i][\"volatile acidity\"])\n        lst[i]['citric acid'] = parseFloat(lst[i][\"citric acid\"])\n        lst[i]['residual sugar'] = parseFloat(lst[i][\"residual sugar\"])\n        lst[i]['chlorides'] = parseFloat(lst[i][\"chlorides\"])\n        lst[i]['free sulfur dioxide'] = parseInt(lst[i][\"free sulfur dioxide\"])\n        lst[i]['total sulfur dioxide'] = parseInt(lst[i][\"total sulfur dioxide\"])\n        lst[i]['density'] = parseFloat(lst[i][\"density\"])\n        lst[i]['pH'] = parseFloat(lst[i][\"pH\"])\n        lst[i]['sulphates'] = parseFloat(lst[i][\"sulphates\"])\n        lst[i]['alcohol'] = parseFloat(lst[i][\"alcohol\"])\n        lst[i]['quality'] = parseFloat(lst[i][\"quality\"])\n\n\n\n\n\n        console.log(parseFloat(lst[i][\"fixed acidity\"]))\n    store.putContainer(conInfo, false)\n        .then(cont => {\n            container = cont;\n            return container.createIndex({ 'columnName': 'name', 'indexType': griddb.IndexType.DEFAULT });\n        })\n        .then(() => {\n            idx++;\n            container.setAutoCommit(false);\n            return container.put([String(idx), lst[i]['fixed acidity'],lst[i][\"volatile acidity\"],lst[i][\"citric acid\"],lst[i][\"residual sugar\"],lst[i][\"chlorides\"],lst[i][\"free sulfur dioxide\"],lst[i][\"total sulfur dioxide\"],lst[i][\"density\"],lst[i][\"pH\"],lst[i][\"sulphates\"],lst[i][\"alcohol\"],lst[i][\"quality\"]]);\n        })\n        .then(() => {\n            return container.commit();\n        })\n       \n        .catch(err => {\n            if (err.constructor.name == \"GSException\") {\n                for (var i = 0; i &lt; err.getErrorStackSize(); i++) {\n                    console.log(\"[\", i, \"]\");\n                    console.log(err.getErrorCode(i));\n                    console.log(err.getMessage(i));\n                }\n            } else {\n                console.log(err);\n            }\n        });\n    }\n    store.getContainer(\"redwinequality\")\n    .then(ts => {\n        container = ts;\n      query = container.query(\"select *\")\n      return query.fetch();\n  })\n  .then(rs => {\n      while (rs.hasNext()) {\n          let rsNext = rs.next();\n          lst2.push(\n            \n                {\n                    'fixed acidity': rsNext[1],\n                    \"volatile acidity\": rsNext[2],\n                    \"citric acid\": rsNext[3],\n                    \"residual sugar\": rsNext[4],\n                    \"chlorides\": rsNext[5],\n                    \"free sulfur dioxide\": rsNext[6],\n                    \"total sulfur dioxide\": rsNext[7],\n                    \"density\": rsNext[8],\n                    \"pH\": rsNext[9],\n                    \"sulphates\": rsNext[10],\n                    \"alcohol\": rsNext[11],\n                    \"quality\": rsNext[12]\n                \n                }\n\n              \n            \n            \n          );\n          \n      }\n\n      \n\n        csvWriter\n        .writeRecords(lst2)\n        .then(()=> console.log('The CSV file was written successfully'));\n\n\n      return \n  }).catch(err => {\n      if (err.constructor.name == \"GSException\") {\n          for (var i = 0; i &lt; err.getErrorStackSize(); i++) {\n              console.log(\"[\", i, \"]\");\n              console.log(err.getErrorCode(i));\n              console.log(err.getMessage(i));\n          }\n      } else {\n          console.log(err);\n      }\n  });   \n    \n  });\n <\/code><\/pre>\n<\/div>\n<p>\u305d\u3057\u3066\u3001\u540c\u3058\u30b3\u30fc\u30c9\u3067GridDB\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001csv\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u3093\u3067\u3044\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u3057\u305f\u7406\u7531\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\u306fnode\u306e\u30d0\u30fc\u30b8\u30e7\u30f312\u3067\u52d5\u4f5c\u3057\u3001GridDB\u306e\u30b3\u30fc\u30c9\u306fnode\u306e\u30d0\u30fc\u30b8\u30e7\u30f310\u3067\u52d5\u4f5c\u3059\u308b\u304b\u3089\u3067\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">let df = await dfd.readCSV(\".\/out.csv\")<\/code><\/pre>\n<\/div>\n<p>\u6b21\u306b\u3001node notebook\u3067csv\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u305d\u306e\u4e0a\u3067\u63a2\u7d22\u7684\u30c7\u30fc\u30bf\u89e3\u6790\u3092\u884c\u3044\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u524d\u51e6\u7406\u3068\u30e2\u30c7\u30ea\u30f3\u30b0\u306b\u79fb\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>GridDB\u304b\u3089\u53d6\u5f97\u3057\u305f\u30c7\u30fc\u30bf\u3092<code>df<\/code>\u3068\u3044\u3046\u5909\u6570\u306b\u683c\u7d0d\u3057\u3001\u30c7\u30fc\u30bf\u30d5\u30ec\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n<h2>\u63a2\u7d22\u7684\u30c7\u30fc\u30bf\u89e3\u6790<\/h2>\n<p>EDA\u306e\u6bb5\u968e\u3067\u306f\u3001\u30c7\u30fc\u30bf\u304c\u3069\u306e\u3088\u3046\u306a\u3082\u306e\u304b\u3092\u628a\u63e1\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002\u4e00\u756a\u7c21\u5358\u306a\u306e\u306f\u3001\u4f55\u884c\u3042\u3063\u3066\u3001\u4f55\u5217\u3042\u3063\u3066\u3001\u305d\u308c\u305e\u308c\u306e\u5217\u306e\u30c7\u30fc\u30bf\u578b\u306f\u4f55\u306a\u306e\u304b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n<p>\u30c7\u30fc\u30bf\u30d5\u30ec\u30fc\u30e0\u306e\u5f62\u72b6\u3092\u78ba\u8a8d\u3057\u307e\u3059\u30021599\u884c\u306812\u5217\u306e\u30c7\u30fc\u30bf\u3067\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">console.log(df.shape)\n\n\/\/  Output\n\/\/ [ 1599, 12 ]<\/code><\/pre>\n<\/div>\n<p>\u3067\u306f\u3001\u5217\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u884c\u306b\u7570\u306a\u308b\u6570\u91cf\u304c\u4e0e\u3048\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u76ee\u6a19\u306b\u3059\u308b\u54c1\u8cea\u5909\u6570\u3067\u3059\u3002<\/p>\n<h2>\u51fa\u529b<\/h2>\n<p>[&#8216;fixed acidity&#8217;,&#8217;volatile acidity&#8217;,&#8217;citric acid&#8217;,&#8217;residual sugar&#8217;,&#8217;chlorides&#8217;,&#8217;free sulfur dioxide&#8217;, &#8216;total sulfur dioxide&#8217;,&#8217;density&#8217;,&#8217;pH&#8217;,&#8217;sulphates&#8217;,&#8217;alcohol&#8217;,&#8217;quality&#8217;]<\/p>\n<p>danfoJS\u306eprint\u95a2\u6570\u306f\u6700\u592710\u884c\u306e\u5370\u5237\u304c\u53ef\u80fd\u306a\u306e\u3067\u3001\u5217\u578b\u306e\u5370\u5237\u306f2\u56de\u306b\u5206\u3051\u3066\u884c\u308f\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">df.loc({columns:['fixed acidity',\n'volatile acidity',\n'citric acid',\n'residual sugar',\n'chlorides',\n'free sulfur dioxide','total sulfur dioxide',\n'density']}).ctypes.print()\n\n\/\/  Output\n\/\/ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\/\/ \u2551 fixed acidity        \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 volatile acidity     \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 citric acid          \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 residual sugar       \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 chlorides            \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 free sulfur dioxide  \u2502 int32   \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 total sulfur dioxide \u2502 int32   \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 density              \u2502 float32 \u2551\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">df.loc({columns:['pH',\n'sulphates',\n'alcohol',\n'quality']}).ctypes.print()\n\n\/\/  Output\n\n\/\/ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\/\/ \u2551 pH        \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 sulphates \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 alcohol   \u2502 float32 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 quality   \u2502 int32   \u2551\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<\/code><\/pre>\n<\/div>\n<p>\u3053\u3053\u3067\u3001\u3059\u3079\u3066\u306e\u5217\u306e\u7d71\u8a08\u306e\u8981\u7d04\u3092\u898b\u3066\u3001\u305d\u306e\u6700\u5c0f\u5024\u3001\u6700\u5927\u5024\u3001\u5e73\u5747\u5024\u3001\u6a19\u6e96\u504f\u5dee\u306a\u3069\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">df.loc({columns:['fixed acidity',\n'volatile acidity',\n'citric acid',\n'residual sugar',\n'chlorides',\n'free sulfur dioxide','total sulfur dioxide',\n'density']}).describe().round(2).print()\n\n\/\/ Output\n\/\/ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\/\/ \u2551            \u2502 fixed acidity     \u2502 volatile acidity  \u2502 citric acid       \u2502 residual sugar    \u2502 chlorides         \u2502 free sulfur dio\u2026  \u2502 total sulfur di\u2026  \u2502 density           \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 count      \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 mean       \u2502 8.32              \u2502 0.53              \u2502 0.27              \u2502 2.54              \u2502 0.09              \u2502 15.87             \u2502 46.47             \u2502 1                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 std        \u2502 1.74              \u2502 0.18              \u2502 0.19              \u2502 1.41              \u2502 0.05              \u2502 10.46             \u2502 32.9              \u2502 0                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 min        \u2502 4.6               \u2502 0.12              \u2502 0                 \u2502 0.9               \u2502 0.01              \u2502 1                 \u2502 6                 \u2502 0.99              \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 median     \u2502 7.9               \u2502 0.52              \u2502 0.26              \u2502 2.2               \u2502 0.08              \u2502 14                \u2502 38                \u2502 1                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 max        \u2502 15.9              \u2502 1.58              \u2502 1                 \u2502 15.5              \u2502 0.61              \u2502 72                \u2502 289               \u2502 1                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 variance   \u2502 3.03              \u2502 0.03              \u2502 0.04              \u2502 1.99              \u2502 0                 \u2502 109.41            \u2502 1082.1            \u2502 0                 \u2551\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">df.loc({columns:['pH','sulphates','alcohol','quality']}).describe().round(2).print()\n\n\/\/ Output\n\/\/ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\/\/ \u2551            \u2502 pH                \u2502 sulphates         \u2502 alcohol           \u2502 quality           \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 count      \u2502 1599              \u2502 1599              \u2502 1599              \u2502 1599              \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 mean       \u2502 3.31              \u2502 0.66              \u2502 10.42             \u2502 5.64              \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 std        \u2502 0.15              \u2502 0.17              \u2502 1.07              \u2502 0.81              \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 min        \u2502 2.74              \u2502 0.33              \u2502 8.4               \u2502 3                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 median     \u2502 3.31              \u2502 0.62              \u2502 10.2              \u2502 6                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 max        \u2502 4.01              \u2502 2                 \u2502 14.9              \u2502 8                 \u2551\n\/\/ \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562\n\/\/ \u2551 variance   \u2502 0.02              \u2502 0.03              \u2502 1.14              \u2502 0.65              \u2551\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<\/code><\/pre>\n<\/div>\n<p>\u3055\u3066\u3001\u5206\u5e03\u3092\u53ef\u8996\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u7bb1\u3072\u3052\u56f3\u3068\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">## Distribution of Column Values\nconst { Plotly } = require('node-kernel');\nlet cols = df.columns\nfor(let i = 0; i &lt; cols.length; i++)\n{\n    let data = [{\n        x: df[cols[i]].values,\n        type: 'box'}];\n    let layout = {\n        height: 400,\n        width: 700,\n        title: 'Distribution of '+cols[i],\n        xaxis: {title: cols[i]}};\n    \/\/ There is no HTML element named `myDiv`, hence the plot is displayed below.\n    Plotly.newPlot('myDiv', data, layout);\n}<\/code><\/pre>\n<\/div>\n<p>\u305d\u3057\u3066\u3001\u3053\u3053\u306b2\u3064\u306e\u5217\u306e\u7bb1\u3072\u3052\u56f3\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/BoxPlot.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/BoxPlot.png\" alt=\"\" width=\"618\" height=\"748\" class=\"aligncenter size-full wp-image-28291\" srcset=\"\/wp-content\/uploads\/2022\/05\/BoxPlot.png 618w, \/wp-content\/uploads\/2022\/05\/BoxPlot-248x300.png 248w, \/wp-content\/uploads\/2022\/05\/BoxPlot-600x726.png 600w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/a><\/p>\n<p>\u54c1\u8cea\u3068\u4ed6\u306e\u30ab\u30e9\u30e0\u306e\u6563\u5e03\u56f3\u3092\u30d7\u30ed\u30c3\u30c8\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">## Scatter Plot between Wine Quality and Column\nlet cols = [...cols]\ncols.pop('quality')\nfor(let i = 0; i &lt; cols.length; i++)\n{\n    let data = [{\n        x: df[cols[i]].values,\n        y: df['quality'].values,\n        type: 'scatter',\n        mode: 'markers'}];\n    let layout = {\n        height: 400,\n        width: 700,\n        title: 'Red Wine Quality vs '+cols[i],\n        xaxis: {title: cols[i]},\n        yaxis: {title: 'Quality'}};\n    \/\/ There is no HTML element named `myDiv`, hence the plot is displayed below.\n    Plotly.newPlot('myDiv', data, layout);    \n}<\/code><\/pre>\n<\/div>\n<p>2\u3064\u306e\u5217\u306e\u4f8b\u306b\u5bfe\u3059\u308b\u30d7\u30ed\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/BoxPlot.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/Scatter.png\" alt=\"\" width=\"618\" height=\"748\" class=\"aligncenter size-full wp-image-28291\" \/><\/a><\/p>\n<p>\u30d7\u30ed\u30c3\u30c8\u3092\u898b\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u5217\u306f\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u3092\u4e88\u6e2c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u9593\u9055\u3044\u306a\u304f\u30e2\u30c7\u30eb\u3092\u4f5c\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u8a00\u3048\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n<h2>\u30c7\u30fc\u30bf\u306e\u524d\u51e6\u7406<\/h2>\n<p>\u30c7\u30fc\u30bf\u306f\u307b\u3068\u3093\u3069\u6574\u7406\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001NULL\u5024\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">df_drop = df.dropNa({ axis: 0 }).loc({columns:['quality','density']})<\/code><\/pre>\n<\/div>\n<h2>\u30e2\u30c7\u30eb<\/h2>\n<p>\u5165\u529b\u5c64\u3068\u51fa\u529b\u5c64\u30921\u3064\u305a\u3064\u6301\u3064\u5358\u7d14\u306a\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">function createModel() {\n    \/\/ Create a sequential model\n    const model = tf.sequential();\n  \n    \/\/ Add a single input layer\n    model.add(tf.layers.dense({inputShape: [1], units: 10, useBias: true}));\n  \n    \/\/ Add an output layer\n    model.add(tf.layers.dense({units: 1, useBias: true}));\n  \n    return model;\n}\n\/\/ Create the model\nconst model = createModel();\ntfvis.show.modelSummary({name: 'Model Summary'}, model);<\/code><\/pre>\n<\/div>\n<p>Model Summary\u306b\u306f\u3001\u5c64\u3068\u5404\u5c64\u306e\u30cb\u30e5\u30fc\u30ed\u30f3\u6570\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/modelsummary.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/modelsummary.png\" alt=\"\" width=\"618\" height=\"748\" class=\"aligncenter size-full wp-image-28291\" \/><\/a><\/p>\n<p>\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u305f\u306e\u3067\u3001\u6b21\u306b\u30c7\u30fc\u30bf\u3092\u30c6\u30f3\u30bd\u30eb\u5f62\u5f0f\u306b\u5909\u63db\u3057\u3066\u3001Tensorflow\u304c\u30e2\u30c7\u30eb\u3092\u5b66\u7fd2\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">function convertToTensor(data) {\n    \/\/ Wrapping these calculations in a tidy will dispose any\n    \/\/ intermediate tensors.\n\n    return tf.tidy(() => {\n      \/\/ Step 1. Shuffle the data\n      tf.util.shuffle(data);\n    \n      \/\/ Step 2. Convert data to Tensor\n      const inputs = data.map(d => d[0]);\n      const labels = data.map(d => d[1]);\n      \/\/ console.log(inputs);\n      \/\/ console.log(data);\n    \n      const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);\n      const labelTensor = tf.tensor2d(labels, [labels.length, 1]);\n    \n      \/\/Step 3. Normalize the data to the range 0 - 1 using min-max scaling\n      const inputMax = inputTensor.max();\n      const inputMin = inputTensor.min();\n      const labelMax = labelTensor.max();\n      const labelMin = labelTensor.min();\n    \n      const normalizedInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin));\n      const normalizedLabels = labelTensor.sub(labelMin).div(labelMax.sub(labelMin));\n    \n      return {\n        inputs: normalizedInputs,\n        labels: normalizedLabels,\n        \/\/ Return the min\/max bounds so we can use them later.\n        inputMax,\n        inputMin,\n        labelMax,\n        labelMin,\n      }\n    });\n    \n\n}<\/code><\/pre>\n<\/div>\n<p>\u305d\u3057\u3066\u3001\u30e2\u30c7\u30eb\u304c\u3069\u306e\u3088\u3046\u306b\u5b66\u7fd2\u3059\u308b\u304b\u3092\u6307\u5b9a\u3059\u308b\u95a2\u6570\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u640d\u5931\u3092\u4e88\u6e2c\u5024\u3068\u5b9f\u969b\u306e\u54c1\u8cea\u5024\u306e\u9593\u306e\u5e73\u5747\u4e8c\u4e57\u8aa4\u5dee\u3068\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">async function trainModel(model, inputs, labels) {\n  \/\/ Prepare the model for training.\n  model.compile({\n    optimizer: \"adam\",\n    loss: tf.losses.meanSquaredError,\n    metrics: ['mse'],\n  });\n\n  const batchSize = 2;\n  const epochs = 5;\n\n  await model.fit(inputs, labels, {\n    batchSize,\n    epochs,\n    shuffle: true,\n    callbacks: tfvis.show.fitCallbacks(\n      { name: 'Training Performance' },\n      ['loss', 'mse'],\n      { height: 200, callbacks: ['onEpochEnd'] }\n    )\n  });\n  return model;\n}<\/code><\/pre>\n<\/div>\n<p>\u6700\u5f8c\u306b\u3001\u30e2\u30c7\u30eb\u3092\u5b66\u7fd2\u3055\u305b\u307e\u3059\u3002\u30c7\u30e2\u306e\u305f\u3081\u3001\u30a8\u30dd\u30c3\u30af\u6570\u306f5\u306e\u307f\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u30e2\u30c7\u30eb\u3084\u30c7\u30fc\u30bf\u306b\u3088\u3063\u3066\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u6700\u521d\u306e100\u884c\u306f\u30c6\u30b9\u30c8\u7528\u306b\u6b8b\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">const tensorData = convertToTensor(df_drop.values)\nconst {inputs, labels} = tensorData;\n\/\/ Train the model\nlet model = await trainModel(model, inputs.slice([100],[-1]), labels.slice([100],[-1]));\nconsole.log('Done Training');\n\n\/\/ Output\n\/\/ Epoch 1 \/ 5\n\/\/ Epoch 2 \/ 5\n\/\/ Epoch 3 \/ 5\n\/\/ Epoch 4 \/ 5\n\/\/ Epoch 5 \/ 5\n\/\/ Done Training\n\n\n\/\/ 11819ms 7392us\/step - loss=0.0450 mse=0.0450 \n\n\/\/ 10833ms 6775us\/step - loss=0.0190 mse=0.0190 \n\n\/\/ 10878ms 6803us\/step - loss=0.0192 mse=0.0192 \n\n\/\/ 10642ms 6655us\/step - loss=0.0192 mse=0.0192 \n\n\/\/ 11025ms 6895us\/step - loss=0.0193 mse=0.0193 <\/code><\/pre>\n<\/div>\n<p>\u30e2\u30c7\u30eb\u306e\u5b66\u7fd2\u304c\u5b8c\u4e86\u3057\u305f\u306e\u3067\u3001\u30e2\u30c7\u30eb\u3092\u8a55\u4fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u8a55\u4fa1\u306b\u306fevaluate\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3001\u30c6\u30b9\u30c8\u30bb\u30c3\u30c8\uff08\u5b66\u7fd2\u6642\u306b\u6b8b\u3063\u305f\u6700\u521d\u306e100\u884c\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\uff09\u3067\u30e2\u30c7\u30eb\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">model.evaluate(inputs.slice([0],[100]), labels.slice([0],[100]))[0].print() \/\/ Loss\nmodel.evaluate(inputs.slice([0],[100]), labels.slice([0],[100]))[1].print() \/\/ Metric\n\n\/\/ Output\n\/\/ Tensor\n    \/\/ 0.018184516578912735<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/github.com\/griddbnet\/Blogs\/tree\/main\/Predicting%20RedWine%20Quality%20Using%20TensorflowJS%20and%20GridDB\">\u8a18\u4e8b\u306e\u5168\u30b3\u30fc\u30c9\u306f\u3053\u3061\u3089\u3067\u3054\u89a7\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/a><\/p>\n<p>\u4eca\u56de\u306f\u3001TensorflowJS\u3068GridDB\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u30e2\u30c7\u30eb\u3092\u5b66\u7fd2\u3057\u3001\u4e88\u6e2c\u3092\u884c\u3046\u65b9\u6cd5\u3092\u5b66\u3073\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/Visor.PNG\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/Visor.PNG\" alt=\"\" width=\"618\" height=\"748\" class=\"aligncenter size-full wp-image-28291\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b \u4eca\u56de\u306f\u3001TensorFlowJS\u3068GridDB\u3092\u4f7f\u3063\u3066\u30e2\u30c7\u30eb\u3092\u5b66\u7fd2\u3057\u3001\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u3092\u4e88\u6e2c\u3057\u307e\u3059\u3002\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u4ee5\u4e0b\u306eNodeJS\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 TensorflowJS &#8211;  [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":49420,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1005],"tags":[],"class_list":["post-50804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1005"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"\u306f\u3058\u3081\u306b\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"\u306f\u3058\u3081\u306b\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-01T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-14T15:55:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c\",\"datePublished\":\"2022-07-01T07:00:00+00:00\",\"dateModified\":\"2025-11-14T15:55:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\"},\"wordCount\":73,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\",\"url\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\",\"name\":\"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg\",\"datePublished\":\"2022-07-01T07:00:00+00:00\",\"dateModified\":\"2025-11-14T15:55:27+00:00\",\"description\":\"\u306f\u3058\u3081\u306b\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg\",\"contentUrl\":\"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg\",\"width\":2560,\"height\":1707},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/griddb.net\/ja\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT","description":"\u306f\u3058\u3081\u306b","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:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/","og_locale":"ja_JP","og_type":"article","og_title":"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT","og_description":"\u306f\u3058\u3081\u306b","og_url":"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2022-07-01T07:00:00+00:00","article_modified_time":"2025-11-14T15:55:27+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg","type":"image\/jpeg"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"\u57f7\u7b46\u8005":"griddb-admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"6\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c","datePublished":"2022-07-01T07:00:00+00:00","dateModified":"2025-11-14T15:55:27+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/"},"wordCount":73,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg","inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/","url":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/","name":"TensorflowJS\u3068GridDB\u3092\u7528\u3044\u305f\u8d64\u30ef\u30a4\u30f3\u306e\u54c1\u8cea\u4e88\u6e2c | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg","datePublished":"2022-07-01T07:00:00+00:00","dateModified":"2025-11-14T15:55:27+00:00","description":"\u306f\u3058\u3081\u306b","inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/predicting-red-wine-quality-using-tensorflowjs-and-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg","contentUrl":"\/wp-content\/uploads\/2022\/05\/50474-alcohol_2560x1707.jpeg","width":2560,"height":1707},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/griddb.net\/ja\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/comments?post=50804"}],"version-history":[{"count":1,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50804\/revisions"}],"predecessor-version":[{"id":51635,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50804\/revisions\/51635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/media\/49420"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/media?parent=50804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/categories?post=50804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/ja\/wp-json\/wp\/v2\/tags?post=50804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}