{"id":46699,"date":"2022-04-13T00:00:00","date_gmt":"2022-04-13T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/"},"modified":"2025-11-13T12:55:59","modified_gmt":"2025-11-13T20:55:59","slug":"clustering-bustabit-gambling-behavior-using-griddb","status":"publish","type":"post","link":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/","title":{"rendered":"Clustering Bustabit Gambling Behavior Using GridDB"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a certain situation or how they make certain decisions. But observing people and trying to predict what they will do next can provide a real learning experience. It can help us to make an informed decision for better chances of a positive outcome.<\/p>\n<p>One such situation where predicting human nature can be beneficial for observers is gambling. For instance, a game of poker &#8211; understanding why players raise, call, and fold in various situations can provide a distinct advantage competitively. In this project, we are going to use <strong>Bustabit<\/strong> data, an online platform for gamblers.<\/p>\n<p>Rules for the game are as follows:<\/p>\n<ol>\n<li>You can <strong>&#8216;Bet&#8217;<\/strong> any amount in Bits, that is 1 millionth of a bitcoin<\/li>\n<li>You can win if you cash out before the game busts<\/li>\n<li>Your win calculated at the cash out according to the multiplier value at that moment<\/li>\n<li>A percentage of <strong>&#8216;Bonus&#8217;<\/strong> per game is applied to your bet and summed to give your final winning or <strong>&#8216;Profit&#8217;<\/strong> in a winning game<\/li>\n<\/ol>\n<p>We will be using GridDB to store our large amount of data, to access the data in real-time with fast processing.<\/p>\n<h2>Exporting and Import dataset using GridDB<\/h2>\n<p>GridDB is a highly scalable and optimized in-memory No SQL database that allows parallel processing for higher performance and efficiency, especially for time-series databases. We will be using GridDB&#8217;s python client, which allows us to connect GridDB to python and import or export data in real-time.<\/p>\n<p>Libraries:<\/p>\n<p>We will be using some python libraries to preprocess and analyze the data visually.<\/p>\n<ol>\n<li>Pandas: Vastly used python library, especially when dealing with data frames.<\/li>\n<li>Matplotlib: Primary library to present data visually using basic plots<\/li>\n<li>Numpy: Library used to make some advanced mathematical calculations<\/li>\n<li>Sklearn: Library that contains clustering algorithm that will be used in our project<\/li>\n<\/ol>\n<p>Preprocessing:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data = pd.read_csv(\"bustabit.csv\")<\/code><\/pre>\n<\/div>\n<p>The dataset is now saved in the form of a data frame into the variable &#8220;data&#8221;.<\/p>\n<p>To make our analysis more understandable, we will be adjusting a few columns of our dataset. We will be replacing the &#8216;ID&#8217; column with a new one that acts as a primary key for our database. Also, we would be replacing &#8216;PlayDate&#8217; with &#8216;Year&#8217; because our project does not require any further information related to time.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data = data.drop([\"Id\"], axis = 1)\ndata.reset_index(drop=True, inplace=True)\ndata.index.name = 'ID'\n    \ndata['Year'] = pd.DatetimeIndex(data['PlayDate']).year\ndata = data.drop('PlayDate', axis = 1)<\/code><\/pre>\n<\/div>\n<p>These are the columns remaining in the data frame that we would be using in our analysis:<\/p>\n<ol>\n<li>ID: Primary key for our database<\/li>\n<li>GameID: Unique ID associated with the bustabit game<\/li>\n<li>Username: Unique name used by the player on bustabit platform<\/li>\n<li>Bet &#8211; The number of Bits betted by the player in this game<\/li>\n<li>CashedOut &#8211; The multiplier at which this particular player cashed out<\/li>\n<li>Bonus &#8211; The bonus reward (in percent) awarded to this player for the game<\/li>\n<li>Profit &#8211; The amount this player won in the game, including the Bonus<\/li>\n<li>BustedAt &#8211; The multiplier value at which this game busted<\/li>\n<li>Year \u2013 The year in which the game was played<\/li>\n<\/ol>\n<p>Before we export our database to GridDB, we need to deal with the NULL values present in our dataset, as GridDB does not allow null values in its database. We will be replacing the NULL values using the following rules:<\/p>\n<ol>\n<li>CashedOut &#8211; If the value for &#8216;CashedOut&#8217; is NA, we will set it to be 0.01 greater than the &#8216;BustedAt&#8217; value to signify that the user failed to cash out before busting<\/li>\n<li>Profit &#8211; If the value for Profit is NA, we will set it to be zero to indicate no profit for the player in that game<\/li>\n<li>Bonus \u2013 If the value for Bonus is NA, we will set it to zero to indicate that there was no bonus for the player in that game.<\/li>\n<\/ol>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data = data.assign(CashedOut = np.where((data['CashedOut'].isnull()),data['BustedAt'] + .01, data['CashedOut']))\ndata = data.assign(Profit = np.where((data['Profit'].isnull()), 0 , data['Profit']))\ndata = data.assign(Profit = np.where((data['Bonus'].isnull()), 0 , data['Bonus']))<\/code><\/pre>\n<\/div>\n<p>As we have completed the preprocessing of our data, we can now save it on our local drive.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data.to_csv(\"preprocessed.csv\")<\/code><\/pre>\n<\/div>\n<p>Exporting Dataset into GridDB:<\/p>\n<p>To upload the dataset to GridDB, we would read the CSV file that contains the preprocessed data.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data_processed = pd.read_csv(\"preprocessed.csv\")<\/code><\/pre>\n<\/div>\n<p>Now, we will create a GridDB container to pass our database schema to the GridDB to be able to generate the design of the database before inserting the row information. Next, we would insert our data into the GridDB.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Create container \ndata_container = \"data_container\"\n\n# Create containerInfo\ndata_containerInfo = griddb.ContainerInfo(data_container,\n                [[\"ID\", griddb.Type.FLOAT],\n                [\"GameID\", griddb.Type.FLOAT],\n                [\"Username\", griddb.Type.STRING],\n                [\"Bet\", griddb.Type.FLOAT],\n                [\"CashedOut\", griddb.Type.FLOAT],\n                [\"Bonus\", griddb.Type.FLOAT],\n                [\"Profit\", griddb.Type.FLOAT],\n                [\"BustedAt\", griddb.Type.FLOAT],\n                [\"Year\", griddb.Type.INTEGER]],\n                griddb.ContainerType.COLLECTION, True)\n    \ndata_columns = gridstore.put_container(data_containerInfo)\n\nprint(\"container created and columns added\")\n    \n# Put rows\ndata_columns.put_rows(data_processed)    \nprint(\"Data Inserted using the DataFrame\")<\/code><\/pre>\n<\/div>\n<p>We have now successfully exported the dataset to the GridDB platform.<\/p>\n<p>Importing Dataset from GridDB:<\/p>\n<p>To import the dataset from the GridDB platform, we will use TQL, GridDB&#8217;s query language similar to SQL. We will create a container and store the fetched data in it.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Define the container names\ndata_container = \"data_container\"\n\n# Get the containers\nobtained_data = gridstore.get_container(data_container)\n    \n# Fetch all rows - language_tag_container\nquery = obtained_data.query(\"select *\")<\/code><\/pre>\n<\/div>\n<p>The next step would be to extract the rows in order of the column info and save it into a data frame to use for data visualization and analysis.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Convert the list to a pandas data frame\ndata = pd.DataFrame(retrieved_data, columns=['ID', 'GameID',\"Username\",\n                   \"Bet\",\"CashedOut\" ,\"Bonus\", \"Profit\",\"BustedAt\",\"Year\"])<\/code><\/pre>\n<\/div>\n<p>We now have our data saved into pandas data frame &#8220;data&#8221; and can continue to use it for our project.<\/p>\n<h2>Data Analysis<\/h2>\n<p>We will be using the Kmeans clustering algorithm to cluster the players into five different sets. We will start y introducing three new columns to understand the dataset even better. The new columns are based on the following rules:<\/p>\n<ol>\n<li>Losses &#8211; If the new value for Profit is zero, we will set this to be the amount the player lost in that game, otherwise we will set it to zero. This value should always be zero or negative<\/li>\n<li>GameWon &#8211; If the user made a profit in this game, the value should be 1, and 0 otherwise<\/li>\n<li>GameLost If the user had a loss in this game, the value should be 1, and 0 otherwise<\/li>\n<\/ol>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data = data.assign(Losses = np.where((data['Profit'] == 0 ), - data['Bet'], 0))\ndata = data.assign(GameWon = np.where((data['Profit'] == 0 ), 0 , 1))\ndata = data.assign(GameLost = np.where((data['Profit'] == 0 ), 1, 0))<\/code><\/pre>\n<\/div>\n<p>Let&#8217;s take a look into some specific rows by filtering out data using conditions:<\/p>\n<ol>\n<li>Highest multiplier: Details of the Game and User with highest &#8216;BustedAt&#8217; value<\/li>\n<\/ol>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data.iloc[data['BustedAt'].idxmax()]<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Multiplier.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Multiplier.png\" alt=\"\" width=\"488\" height=\"227\" class=\"aligncenter size-full wp-image-28147\" srcset=\"\/wp-content\/uploads\/2022\/03\/Highest_Multiplier.png 488w, \/wp-content\/uploads\/2022\/03\/Highest_Multiplier-300x140.png 300w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><\/a><\/p>\n<ol>\n<li>Highest Bet: Details of the Game and User with the highest Bet<\/li>\n<\/ol>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data.iloc[data['Bet'].idxmax()]<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Bet.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Bet.png\" alt=\"\" width=\"525\" height=\"223\" class=\"aligncenter size-full wp-image-28142\" srcset=\"\/wp-content\/uploads\/2022\/03\/Highest_Bet.png 525w, \/wp-content\/uploads\/2022\/03\/Highest_Bet-300x127.png 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<ol>\n<li>Highest Profit: Details of the Game and User with the highest Profit<\/li>\n<\/ol>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data.iloc[data['Profit'].idxmax()]<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Profit.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Highest_Profit.png\" alt=\"\" width=\"508\" height=\"225\" class=\"aligncenter size-full wp-image-28146\" srcset=\"\/wp-content\/uploads\/2022\/03\/Highest_Profit.png 508w, \/wp-content\/uploads\/2022\/03\/Highest_Profit-300x133.png 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/><\/a><\/p>\n<p>Next, we would group the data using &#8216;Username&#8217; to identify the earnings, winnings, and losses by each user, throughout their gambling history at Bustabit. This would help us identify the gambling habits of each user and better understand of relationship and similarities between groups of players.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data_groupby = data.groupby('Username').agg({'CashedOut': 'mean',\n                                             'Bet': 'mean',\n                                             'Profit': 'sum',\n                                             'Losses': 'sum',\n                                             'GameWon': 'sum',\n                                             'GameLost': 'sum'})<\/code><\/pre>\n<\/div>\n<p>This is what our data looks like now:<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Group_by.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Group_by.png\" alt=\"\" width=\"738\" height=\"232\" class=\"aligncenter size-full wp-image-28143\" srcset=\"\/wp-content\/uploads\/2022\/03\/Group_by.png 738w, \/wp-content\/uploads\/2022\/03\/Group_by-300x94.png 300w, \/wp-content\/uploads\/2022\/03\/Group_by-600x189.png 600w\" sizes=\"(max-width: 738px) 100vw, 738px\" \/><\/a><\/p>\n<p>Before moving unto clusters formation, we would first like to standardize the data across the dataset. This would transform the dataset into a standard measuring unit, making our algorithm more efficient. We will create our standardization function and apply it to every numerical column of our dataset.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">def standardization_function(x):\n    return (x-np.mean(x)\/np.std(x))\n\n\nbustabit_standardized = data_groupby.apply(lambda x: standardization_function(x) \n                                           if ((x.dtype == float) or (type(x) == int)) \n<\/code><\/pre>\n<\/div>\n<p>Our last step is to now form clusters of players into five sets using the sklearn library.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">kmeans = KMeans(n_clusters=5, random_state=0).fit(bustabit_standardized)\nclustering_data = pd.DataFrame()  \nclustering_data['cluster'] = kmeans.predict(bustabit_standardized)<\/code><\/pre>\n<\/div>\n<p>Here is a glimpse of our data divided into five clusters:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">summary = clustering_data.groupby(\"cluster\").mean()\nsummary['count'] = clustering_data['cluster'].value_counts()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Cluster.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/03\/Cluster.png\" alt=\"\" width=\"357\" height=\"154\" class=\"aligncenter size-full wp-image-28145\" srcset=\"\/wp-content\/uploads\/2022\/03\/Cluster.png 357w, \/wp-content\/uploads\/2022\/03\/Cluster-300x129.png 300w\" sizes=\"(max-width: 357px) 100vw, 357px\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>By looking at the final results of our project, we can conclude that most of the players have similar attributes and fall in the same clustering group while there are very few exceptions of players that are different from the standard behavior. All of the analysis was done using the GridDB database at the backend, making the integration seamless and efficient.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a certain situation or how they make certain decisions. But observing people and trying to predict what they will do next can provide a real learning experience. It can help us [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":28203,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a\" \/>\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\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-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-04-13T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:55:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1499\" \/>\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=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Clustering Bustabit Gambling Behavior Using GridDB\",\"datePublished\":\"2022-04-13T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\"},\"wordCount\":1163,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\",\"name\":\"Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg\",\"datePublished\":\"2022-04-13T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:59+00:00\",\"description\":\"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg\",\"contentUrl\":\"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg\",\"width\":2560,\"height\":1499},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb.net\/en\/#website\",\"url\":\"https:\/\/griddb.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.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.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.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.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT","description":"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a","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\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a","og_url":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2022-04-13T07:00:00+00:00","article_modified_time":"2025-11-13T20:55:59+00:00","og_image":[{"width":2560,"height":1499,"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg","type":"image\/jpeg"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"griddb-admin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Clustering Bustabit Gambling Behavior Using GridDB","datePublished":"2022-04-13T07:00:00+00:00","dateModified":"2025-11-13T20:55:59+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/"},"wordCount":1163,"commentCount":0,"publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/","url":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/","name":"Clustering Bustabit Gambling Behavior Using GridDB | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg","datePublished":"2022-04-13T07:00:00+00:00","dateModified":"2025-11-13T20:55:59+00:00","description":"Introduction Understanding human behavior can be a tricky and attention-demanding task. It is not easy or simple to explain how people would act in a","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/clustering-bustabit-gambling-behavior-using-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg","contentUrl":"\/wp-content\/uploads\/2022\/03\/75674-dice-bright-lights_2560x1499.jpg","width":2560,"height":1499},{"@type":"WebSite","@id":"https:\/\/griddb.net\/en\/#website","url":"https:\/\/griddb.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.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.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.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.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/comments?post=46699"}],"version-history":[{"count":1,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46699\/revisions"}],"predecessor-version":[{"id":51373,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46699\/revisions\/51373"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media\/28203"}],"wp:attachment":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media?parent=46699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/categories?post=46699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/tags?post=46699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}