{"id":46772,"date":"2023-08-12T00:00:00","date_gmt":"2023-08-12T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/"},"modified":"2026-03-30T12:46:54","modified_gmt":"2026-03-30T19:46:54","slug":"soccer-players-recommendation-system-using-machine-learning-python-and-griddb","status":"publish","type":"post","link":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/","title":{"rendered":"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB"},"content":{"rendered":"<p>The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and managers around the globe are always looking for an edge to find the best talent that can add to the winning soccer to their team. Using machine learning to help team managers find a balanced, talented team is a perfect combination of technology and data to add value to a business.<\/p>\n<p>This article will cover recommendation system models to help managers find talent and upcoming players based on their performance and soccer league data. The objective is to use the recommendation system as a monitoring and prospecting tool to find innovative, high-performing soccer players. In this article, we propose a recommendation system model to recommend soccer players given their soccer matches data using Python and GridDB.<\/p>\n<p>Please download the source code from here:<\/p>\n<div class=\"clipboard\">\n<pre><code>$ git clone https:\/\/github.com\/griddbnet\/Blogs.git --branch soccer<\/code><\/pre>\n<\/div>\n<h2>Setting up your environment<\/h2>\n<p>To implement the recommendation system described in this article, we begin by configuring your machine&#8217;s environment to execute the Python code properly. Below are some of the prerequisites that must be met in your environment:<\/p>\n<ul>\n<li><strong>GridDB:<\/strong>  <a href=\"https:\/\/docs.griddb.net\/gettingstarted\/python.html\">GridDB<\/a> is our database that stores the data used in the recommendation system model.<\/li>\n<li><strong>Python 3.11.2:<\/strong> The latest version of <a href=\"https:\/\/www.python.org\/downloads\/\">Python 3.11.2<\/a> is used in our solution.<\/li>\n<li><strong>Jupyter Notebook:<\/strong> <a href=\"https:\/\/jupyter.org\/install\">Jupyter Notebook<\/a> is an integrated development environment (IDE) to run our Python code.<\/li>\n<\/ul>\n<p>If you need to install any missing packages, you can do so through the command line by typing the following:<\/p>\n<div class=\"clipboard\">\n<pre><code>pip install package-name<\/code><\/pre>\n<\/div>\n<p>In addition, if you are utilizing GridDB, you will need to acquire these extra libraries:<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/griddb\/c_client\">GridDB C-client<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/griddb\/python_client\">GridDB Python Client<\/a><\/li>\n<\/ol>\n<p>Finally, we are missing <a href=\"https:\/\/pypi.org\/project\/griddb-python\/\">GridDB Python Client Library<\/a> in our situation. Here&#8217;s how we use the pip command to install the missing library in the Jupyter terminal:<\/p>\n<div class=\"clipboard\">\n<pre><code>pip install griddb-python<\/code><\/pre>\n<\/div>\n<p>We may now explore our dataset after successfully installing and configuring our environment.<\/p>\n<h2>Introduction to the dataset<\/h2>\n<p>The dataset used in this article contains <strong>416<\/strong> rows and <strong>17<\/strong> columns. The dataset comprises attributes defining soccer players in terms of their role and historical accomplishments. These attributes consider the current market value, field position, and points scored.<\/p>\n<p>The following is the list of the features that are found in our dataset:<\/p>\n<ul>\n<li><strong>Name:<\/strong> Player name in a text value.<\/li>\n<li><strong>Club:<\/strong> Club name in a text value.<\/li>\n<li><strong>Age:<\/strong> Player age in numerical value.<\/li>\n<li><strong>Position:<\/strong> Player position in the field in a text value.<\/li>\n<li><strong>Position Category:<\/strong> A categorical variable representing the player&#8217;s field position.<\/li>\n<li><strong>Market Value:<\/strong> Player market price in numerical value.<\/li>\n<li><strong>Page Views:<\/strong> The number of Wikipedia page views is calculated as a daily average.<\/li>\n<li><strong>Fantasy League Value:<\/strong> Player Fantasy League Price in numerical value.<\/li>\n<li><strong>Fantasy League Selection:<\/strong> Player Fantasy League Selection in numerical value.<\/li>\n<li><strong>Fantasy League Points:<\/strong> Player Fantasy League Points in numerical value.<\/li>\n<li><strong>Region:<\/strong> A categorical variable representing the region of the player.<\/li>\n<li><strong>Nationality:<\/strong> A text value that represents the nationality of the player.<\/li>\n<li><strong>New Foreign:<\/strong> A boolean value to indicate if the players signed up with a foreign club newly.<\/li>\n<li><strong>Age Category:<\/strong> The age group of the player.<\/li>\n<li><strong>Club ID:<\/strong> A numerical value that represents a club identifier.<\/li>\n<li><strong>Big Club:<\/strong> A boolean value to indicate if the players signed up with a big club or not.<\/li>\n<li><strong>New Signing:<\/strong> A boolean value to tell if the players signed up with a club newly.<\/li>\n<\/ul>\n<p>The dataset was extracted from the <a href=\"https:\/\/www.kaggle.com\/datasets\/mauryashubham\/english-premier-league-players-dataset\">English Premier League Players Dataset<\/a>. The table below is the first <strong>three<\/strong> rows of this dataset:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/github.com\/SimoCs\/Soccer-Players-Recommendation-System\/assets\/32298957\/68333831-8e5a-4589-afc3-c4d2ea16c733\" alt=\"image\" \/><\/p>\n<h2><strong>Importing the necessary libraries<\/strong><\/h2>\n<p>In this article, we will be using multiple Python modules that we will import according to their usage to build our recommendation system:<\/p>\n<ul>\n<li>Python libraries used to read and preprocess the dataset:<\/li>\n<\/ul>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">  import numpy as np \n  import pandas as pd\n<\/code><\/pre>\n<\/div>\n<ul>\n<li>Python libraries are used to explore the dataset using graphs and plots:<\/li>\n<\/ul>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">  import seaborn as sns\n  import matplotlib.pyplot as plt\n<\/code><\/pre>\n<\/div>\n<ul>\n<li>Python libraries used to build the recommendation system model:<\/li>\n<\/ul>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">  from sklearn.preprocessing import StandardScaler\n  from sklearn.neighbors import NearestNeighbors\n  from sklearn.decomposition import PCA\n<\/code><\/pre>\n<\/div>\n<ul>\n<li>Python library used to connect to a GridDB cluster:<\/li>\n<\/ul>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">  import griddb_python as griddb\n<\/code><\/pre>\n<\/div>\n<p>After successfully importing the required libraries, we begin with reading our <strong>English Premier League Players Dataset<\/strong>.<\/p>\n<h2><strong>Loading the Dataset<\/strong><\/h2>\n<p>GridDB plays a significant role in creating our recommendation system as it is the data storage mechanism we will use to store our dataset. To successfully store the data, we will first load the GridDB container. This can be done using the <code>griddb_python<\/code> library we installed earlier. Next, we will use <strong>container.put<\/strong> to insert the data using a loop. Once done, we must load the data back into a data frame to continue creating our recommendation system.<\/p>\n<p>The code described in this section can be written as follows:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">factory = griddb.StoreFactory.get_instance()\n\n# Provide the necessary arguments\ngridstore = factory.get_store(\n    notification_member = '127.0.0.1:10001',\n    cluster_name = 'myCluster',\n    username = 'admin',\n    password = 'admin'\n)\n\n# Define the container info\nconInfo = griddb.ContainerInfo(\n    \"football_players\",\n    [\n        [\"name\", griddb.Type.STRING],\n        [\"club\", griddb.Type.STRING],\n        [\"age\", griddb.Type.DOUBLE],\n        [\"position\", griddb.Type.STRING],\n        [\"position_cat\", griddb.Type.DOUBLE],\n        [\"market_value\", griddb.Type.DOUBLE],\n        [\"page_views\", griddb.Type.DOUBLE],\n        [\"fpl_value\", griddb.Type.DOUBLE],\n        [\"fpl_sel\", griddb.Type.STRING],\n        [\"fpl_points\", griddb.Type.DOUBLE],\n        [\"region\", griddb.Type.DOUBLE],\n        [\"nationality\", griddb.Type.STRING],\n        [\"new_foreign\", griddb.Type.DOUBLE],\n        [\"age_cat\", griddb.Type.DOUBLE],\n        [\"club_id\", griddb.Type.DOUBLE],\n        [\"big_club\", griddb.Type.DOUBLE],\n        [\"new_signing\", griddb.Type.DOUBLE]\n    ],\n    griddb.ContainerType.COLLECTION, True\n)\n\n# Drop container if it exists\ngridstore.drop_container(conInfo.name)\n\n# Create a container\ncontainer = gridstore.put_container(conInfo)\n\n# Load the data\n\n# Put rows\nfor i in range(len(data)):\n  row = data.iloc[i].tolist()\n  try:\n    container.put(row)\n  except Exception as e:\n    print(f\"Error on row {i}: {row}\")\n    print(e)\n\ncont = gridstore.get_container(\"football_players\")\n\nif cont is None:\n  print(\"Does not exist\")\n\nprint(\"connection successful\")\n\n# Define the exact columns you need\ncolumns = [\"*\"]\n\nselect_statement = \"SELECT \" + \", \".join(columns) + \" FROM football_players\"\n\n# Execute the query\nquery = container.query(select_statement)\nrs = query.fetch(False)\n\ndata = rs.fetch_rows()\n\nprint(data.head())<\/code><\/pre>\n<\/div>\n<h2><strong>Exploratory Data Analysis<\/strong><\/h2>\n<p>Before we build our recommendation system, we must begin with an exploratory data analysis that will allow us to find any inconsistencies in our data and overall visualization of the dataset.<br \/>\nFirst, we begin by checking for any null values in our attributes. This is achieved with the following lines of code:<\/p>\n<div class=\"clipboard\">\n<pre><code>data.isnull().sum()<\/code><\/pre>\n<\/div>\n<p>This cell outputs the following results, indicating that we have <strong>one<\/strong> missing value for the <strong>region<\/strong> attribute:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">name            0\nclub            0\nage             0\nposition        0\nposition_cat    0\nmarket_value    0\npage_views      0\nfpl_value       0\nfpl_sel         0\nfpl_points      0\nregion          1\nnationality     0\nnew_foreign     0\nage_cat         0\nclub_id         0\nbig_club        0\nnew_signing     0\ndtype: int64<\/code><\/pre>\n<\/div>\n<p>To clean up our missing value, we can use the built-in method <code>dropna()<\/code>. This method returns the newly cleaned dataset to replace the old unclean one.<\/p>\n<p>This is achieved with the following code:<\/p>\n<div class=\"clipboard\">\n<pre><code>data = data.dropna()<\/code><\/pre>\n<\/div>\n<p>Now that we have replaced all missing values, we can move to visualize our data. The first step to graph our data is to compute the correlation matrix representing the different attributes that can be used to predict others using the <code>corr()<\/code> method. This is very useful as it shows what data points can be used to recommend a player and how every player is measured in terms of the attributes presented in our dataset.<\/p>\n<p>This is achieved with the following code:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">sample = data.select_dtypes(include='number')\ncorr = sample.corr()\nmask = np.zeros_like(corr, dtype = np.bool_)\nmask[np.triu_indices_from(mask)] = True\nplt.figure(figsize=(10,10))\nsns.heatmap(corr, mask=mask)<\/code><\/pre>\n<\/div>\n<p>The graph we came up with in this section is a heatmap that takes the <strong>X<\/strong> and <strong>Y<\/strong> axes&#8217; attributes and measures correlation in a predetermined scale. The following is our heatmap:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/github.com\/SimoCs\/Soccer-Players-Recommendation-System\/assets\/32298957\/c863ddd6-7b06-47cd-b238-edd48aa10dcb\" alt=\"image\" \/><\/p>\n<h2><strong>Recommendation System<\/strong><\/h2>\n<p>In this section, we design and prepare our recommendation system model. For this purpose, we begin by converting our data points to numerical values using a standard scaler. Next, we run the Nearest Neighbors model that will be used as our recommendation system algorithm. The model will take as input our numerical data and will be used to find comparable players that are close in characteristics to our input.<\/p>\n<p>This is achieved with the following code:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">scaled = StandardScaler()\nX = scaled.fit_transform(sample)\nrecommendations = NearestNeighbors(n_neighbors = 5, algorithm='kd_tree')\nrecommendations.fit(X)\nplayer_index = recommendations.kneighbors(X)[1]<\/code><\/pre>\n<\/div>\n<p>We have prepared our model and must create a method to find the player&#8217;s index in our dataset based on a given name. This is very useful as it will allow us to use the results of the recommendation system to extract the recommended player attributes.<\/p>\n<p>This is achieved with the following code:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">def find_index(x):\n    return data[data['name']==x].index.tolist()[0]<\/code><\/pre>\n<\/div>\n<p>The last step is to create a method using our model to extract the player&#8217;s information. In other words, we must extract key values describing the recommended players for every player. Our example mainly focuses on the player&#8217;s name, market value, age, and current club.<\/p>\n<p>This is achieved with the following code:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">def recommendation_system(player):\n    print(\"Here are four players who are similar to {}: \".format(player))\n    index =  find_index(player)\n    \n    for i in player_index[index][1:]:\n        print(\"Player Name: {}nPlayer Market Value: \u20ac{}nPlayer Age: {}nPlayer Current Club: {}n\".format(\n            data.iloc[i]['name'],\n            data.iloc[i]['market_value'], \n            data.iloc[i]['age'], \n            data.iloc[i]['club']))<\/code><\/pre>\n<\/div>\n<h2>Model Evaluation<\/h2>\n<p>At this moment, we are ready to evaluate our model. In this example, we will run our recommendation system that inputs a player name and recommends <strong>four<\/strong> key players comparable to the player inputter.<\/p>\n<p>This code can be achieved as follow:<\/p>\n<div class=\"clipboard\">\n<pre><code>recommendation_system('Petr Cech')<\/code><\/pre>\n<\/div>\n<p>The results of our mode are as follows:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">Here are four players who are similar to Petr Cech: \nPlayer Name: Willy Caballero\nPlayer Market Value: \u20ac1.5\nPlayer Age: 35\nPlayer Current Club: Chelsea\n\nPlayer Name: Nacho Monreal\nPlayer Market Value: \u20ac13.0\nPlayer Age: 31\nPlayer Current Club: Arsenal\n\nPlayer Name: Laurent Koscielny\nPlayer Market Value: \u20ac22.0\nPlayer Age: 31\nPlayer Current Club: Arsenal\n\nPlayer Name: Artur Boruc\nPlayer Market Value: \u20ac1.0\nPlayer Age: 37\nPlayer Current Club: Bournemouth<\/code><\/pre>\n<\/div>\n<p>As we can see, the recommendation system was able to predict with high accurse five players that are very close to our input players. This proves that our model is ready for deployment and can be used to predict future talent based on a current player.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Using a recommendation system to create a list of prospects in the business of professional atheism is a competitive advantage any team manager should consider. The article covered the step-by-step process of creating a recommendation model using English Premier League Players. GridDB was extensively used in the article as a database storage for our dataset. This database stores trained data, and it is used to call our recommendation system to recommend players based on their peers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and managers around the globe are always looking for an edge to find the best talent that can add to the winning soccer to their team. Using machine learning to help team managers find a balanced, [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":29735,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46772","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>Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and\" \/>\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\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-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=\"2023-08-12T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-30T19:46:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\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\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB\",\"datePublished\":\"2023-08-12T07:00:00+00:00\",\"dateModified\":\"2026-03-30T19:46:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\"},\"wordCount\":1325,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\",\"name\":\"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | 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\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg\",\"datePublished\":\"2023-08-12T07:00:00+00:00\",\"dateModified\":\"2026-03-30T19:46:54+00:00\",\"description\":\"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg\",\"contentUrl\":\"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg\",\"width\":1920,\"height\":1280},{\"@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\":\"en-US\"},{\"@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\":\"en-US\",\"@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\":\"en-US\",\"@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\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | GridDB: Open Source Time Series Database for IoT","description":"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and","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\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and","og_url":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2023-08-12T07:00:00+00:00","article_modified_time":"2026-03-30T19:46:54+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg","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\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB","datePublished":"2023-08-12T07:00:00+00:00","dateModified":"2026-03-30T19:46:54+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/"},"wordCount":1325,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/","url":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/","name":"Soccer Players Recommendation System Using Machine Learning, Python, and GridDB | 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\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg","datePublished":"2023-08-12T07:00:00+00:00","dateModified":"2026-03-30T19:46:54+00:00","description":"The soccer business is a multi-billion dollar industry combining high-performing athletes, passionate fans, and big sponsorship deals. Team owners and","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/soccer-players-recommendation-system-using-machine-learning-python-and-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg","contentUrl":"\/wp-content\/uploads\/2023\/08\/field_1920x1280.jpeg","width":1920,"height":1280},{"@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":"en-US"},{"@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":"en-US","@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":"en-US","@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\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46772"}],"version-history":[{"count":2,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46772\/revisions"}],"predecessor-version":[{"id":55124,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46772\/revisions\/55124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media\/29735"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}