Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: pub@towardsai.net
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

Publication

AI Agent Developer: A Journey Through Code, Creativity, and Curiosity
Artificial Intelligence   Data Science   Latest   Machine Learning

AI Agent Developer: A Journey Through Code, Creativity, and Curiosity

Last Updated on February 19, 2025 by Editorial Team

Author(s): Talha Nazar

Originally published on Towards AI.

Image By Author

Artificial Intelligence (AI) agents are no longer just science fiction — they’re transforming industries, automating mundane tasks, and solving complex problems that were once thought impossible. From virtual assistants like Siri to autonomous robots in warehouses, AI agents have become indispensable. But how does one become an expert in developing these intelligent systems?

This story will take you on a realistic journey through the life of Alex, an aspiring AI agent developer. Following Alex’s footsteps, you’ll learn everything from foundational concepts to advanced techniques, complete with practical examples, visualizations, and links to resources. Let’s dive in.

Laying the Foundation — Understanding What an AI Agent Is

What is an AI Agent?

An AI agent is a system capable of perceiving its environment, making decisions, and taking actions to achieve specific goals. Unlike traditional software programs, AI agents use machine learning models to adapt their behavior based on data.

Key Components of an AI Agent

  1. Perception: Sensors or input mechanisms to gather information about the environment.
  2. Decision-Making: Algorithms to process inputs and decide on actions.
  3. Action Execution: Mechanisms to interact with the environment.
  4. Learning: Ability to improve performance over time using feedback loops.

Example: Imagine building a chatbot that answers customer queries. It perceives user input (text), decides on a response using natural language processing (NLP), executes the action (sending the reply), and learns from past interactions to enhance future responses.

Graphical Visualization

+-------------------+
| Environment |
+-------------------+
|
v
+-------------------+
| Perception |
+-------------------+
|
v
+-------------------+
| Decision-Making |
+-------------------+
|
v
+-------------------+
| Action Execution |
+-------------------+
|
v
+-------------------+
| Learning |
+-------------------+

Building Blocks of AI Agents

To create robust AI agents, we need to understand several key technologies:

1. Machine Learning Basics

Machine learning (ML) enables AI agents to learn patterns from data without explicit programming. There are three main types:

  • Supervised Learning: Training a model with labeled data.
  • Unsupervised Learning: Finding hidden structures in unlabeled data.
  • Reinforcement Learning: Teaching an agent to make sequential decisions through rewards and penalties.

Practical Example: Suppose you want your AI agent to classify emails as “spam” or “not spam.” You’d use supervised learning with labeled email datasets.

Email Spam Classifier Using Scikit-Learn

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB

# Sample dataset
emails = ["Win money now!", "Meeting scheduled", "Free lottery tickets"]
labels = [1, 0, 1] # 1 = Spam, 0 = Not Spam

# Convert text into numerical features
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)

# Train a Naive Bayes classifier
model = MultinomialNB()
model.fit(X_train, y_train)

# Evaluate the model
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

Explanation:

  • CountVectorizer converts text into numerical vectors.
  • MultinomialNB is a probabilistic model suitable for text classification.
  • We evaluate the model’s accuracy on unseen data.

Learn More About Scikit-Learn

2. Natural Language Processing (NLP)

NLP allows AI agents to understand and generate human language. Libraries like NLTK, SpaCy, and Hugging Face Transformers simplify NLP tasks.

Practical Example: Creating a sentiment analysis tool to determine whether a review is positive or negative.

Sentiment Analysis Using Hugging Face Transformers

from transformers import pipeline

# Load pre-trained sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")

# Analyze sentiment of a sample text
result = sentiment_pipeline("I love this product!")
print(result)

Output:

[{'label': 'POSITIVE', 'score': 0.9987}]

Explanation:

  • The pipeline function loads a pre-trained model fine-tuned for sentiment analysis.
  • This approach leverages transfer learning, where a general-purpose model is adapted for specific tasks.

Hugging Face Documentation

3. Reinforcement Learning (RL)

RL is ideal for scenarios requiring decision-making under uncertainty, such as game-playing agents or autonomous vehicles.

Setting Up Your Development Environment

To become an AI agent developer, you need the right tools. Here’s how to set up your development environment:

Step 1: Install Python

Python is the most popular programming language for AI development due to its simplicity and extensive libraries. Download it from python.org and install it on your machine.

Step 2: Install Essential Libraries

You’ll need several libraries to build AI agents. Use pip to install them:

pip install numpy pandas matplotlib scikit-learn tensorflow keras gym
  • NumPy: For numerical computations.
  • Pandas: For data manipulation.
  • Matplotlib: For data visualization.
  • Scikit-Learn: For machine learning algorithms.
  • TensorFlow/Keras: For deep learning models.
  • Gym: For reinforcement learning environments.

Step 3: Choose an IDE

Integrated Development Environments (IDEs) like VS Code, PyCharm, or Jupyter Notebook make coding easier. I recommend starting with Jupyter Notebook for its interactive nature.

Building Your First AI Agent

Let’s build a simple AI agent using Reinforcement Learning (RL). RL is a type of machine learning where an agent learns to perform tasks by interacting with an environment and receiving rewards or penalties.

Example 1: CartPole Problem

The CartPole problem is a classic RL task where the goal is to balance a pole on a moving cart. We’ll use the OpenAI Gym library to simulate this environment.

Step 1: Import Libraries

import gym
import numpy as np
from collections import deque
import matplotlib.pyplot as plt

Step 2: Initialize the Environment

env = gym.make('CartPole-v1')
state_size = env.observation_space.shape[0]
action_size = env.action_space.n
print(f"State Size: {state_size}, Action Size: {action_size}")

Here, state_size represents the number of variables describing the environment (e.g., cart position, velocity), and action_size represents the possible actions (e.g., move left or right).

Step 3: Define the Agent

We’ll create a simple Q-learning agent. Q-learning is a model-free RL algorithm that learns the value of actions in each state.

class QLearningAgent:
def __init__(self, state_size, action_size):
self.state_size = state_size
self.action_size = action_size
self.q_table = np.zeros((state_size, action_size))
self.learning_rate = 0.1
self.discount_factor = 0.95
self.epsilon = 1.0 # Exploration rate

def choose_action(self, state):
if np.random.rand() <= self.epsilon:
return env.action_space.sample() # Explore
return np.argmax(self.q_table[state]) # Exploit

def learn(self, state, action, reward, next_state):
old_value = self.q_table[state, action]
next_max = np.max(self.q_table[next_state])
new_value = (1 - self.learning_rate) * old_value + self.learning_rate * (reward + self.discount_factor * next_max)
self.q_table[state, action] = new_value

Step 4: Train the Agent

agent = QLearningAgent(state_size, action_size)
episodes = 1000
scores = deque(maxlen=100)
for episode in range(episodes):
state = env.reset()
total_reward = 0
done = False

while not done:
action = agent.choose_action(state)
next_state, reward, done, _ = env.step(action)
agent.learn(state, action, reward, next_state)
state = next_state
total_reward += reward

scores.append(total_reward)
avg_score = np.mean(scores)

if episode % 100 == 0:
print(f"Episode: {episode}, Average Score: {avg_score}")

Step 5: Visualize Results

plt.plot(scores)
plt.xlabel("Episode")
plt.ylabel("Score")
plt.title("Training Progress")
plt.show()

Example 2: Tic-Tac-Toe RL Agent

import gym
import numpy as np

# Create a custom Tic-Tac-Toe environment
class TicTacToeEnv(gym.Env):
def __init__(self):
self.board = np.zeros((3, 3))
self.action_space = gym.spaces.Discrete(9)
self.observation_space = gym.spaces.Box(low=-1, high=1, shape=(3, 3))

def step(self, action):
row, col = divmod(action, 3)
if self.board[row][col] != 0:
return self.board.flatten(), -10, False, {} # Penalize invalid moves
self.board[row][col] = 1
done = self.check_winner() or np.all(self.board != 0)
reward = 1 if done else 0
return self.board.flatten(), reward, done, {}

def reset(self):
self.board = np.zeros((3, 3))
return self.board.flatten()

def check_winner(self):
# Check rows, columns, diagonals for a winner
pass

env = TicTacToeEnv()
state = env.reset()

for _ in range(100):
action = env.action_space.sample() # Random action
state, reward, done, info = env.step(action)
if done:
print("Game Over")
break

Explanation:

  • The gym.Env class defines the environment dynamics.
  • The agent interacts with the environment step() and receives rewards/penalties.

OpenAI Gym Documentation

Advanced Techniques for AI Agent Development

1. Multi-Agent Systems

In some applications, multiple AI agents collaborate or compete. For instance, self-driving cars must coordinate with other vehicles.

2. Explainability and Debugging

As AI agents grow more complex, ensuring transparency becomes crucial. Tools like SHAP and LIME help interpret model predictions.

3. Transfer Learning

Leverage pre-trained models to solve similar problems faster. For instance, use a pre-trained vision model for object detection in autonomous vehicles.

Practical Applications and Career Pathways

AI agents have countless real-world applications:

  • Healthcare: Diagnosing diseases using medical imaging.
  • Finance: Algorithmic trading and fraud detection.
  • Entertainment: Game-playing agents like AlphaGo.

To succeed as an AI agent developer, focus on:

  1. Continuous Learning: Stay updated with research papers and online courses.
  2. Portfolio Building: Develop projects and share them on GitHub.
  3. Networking: Join AI communities and attend conferences.

Conclusion: Your Path Forward

By mastering the concepts outlined above — machine learning, NLP, reinforcement learning, multi-agent systems, and explainability — you can develop cutting-edge AI agents. Remember, becoming an expert requires continuous learning and experimentation.

Next Steps:

  • Explore Kaggle Competitions for hands-on practice.
  • Join communities like Reddit’s r/MachineLearning for discussions.
  • Contribute to open-source projects on GitHub.

Citations and References

  1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  2. Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
  3. Hugging Face. (n.d.). Retrieved from https://huggingface.co/

Thank you for taking the time to read this! If you found it insightful, clap, comment, and share it with others who might benefit. This was a basic introduction, but in my next story, I’ll dive deeper into the details — stay tuned!

Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

Published via Towards AI

Feedback ↓

Sign Up for the Course
`; } else { console.error('Element with id="subscribe" not found within the page with class "home".'); } } }); // Remove duplicate text from articles /* Backup: 09/11/24 function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag elements.forEach(el => { const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 2) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); */ // Remove duplicate text from articles function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag // List of classes to be excluded const excludedClasses = ['medium-author', 'post-widget-title']; elements.forEach(el => { // Skip elements with any of the excluded classes if (excludedClasses.some(cls => el.classList.contains(cls))) { return; // Skip this element if it has any of the excluded classes } const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 10) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); //Remove unnecessary text in blog excerpts document.querySelectorAll('.blog p').forEach(function(paragraph) { // Replace the unwanted text pattern for each paragraph paragraph.innerHTML = paragraph.innerHTML .replace(/Author\(s\): [\w\s]+ Originally published on Towards AI\.?/g, '') // Removes 'Author(s): XYZ Originally published on Towards AI' .replace(/This member-only story is on us\. Upgrade to access all of Medium\./g, ''); // Removes 'This member-only story...' }); //Load ionic icons and cache them if ('localStorage' in window && window['localStorage'] !== null) { const cssLink = 'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'; const storedCss = localStorage.getItem('ionicons'); if (storedCss) { loadCSS(storedCss); } else { fetch(cssLink).then(response => response.text()).then(css => { localStorage.setItem('ionicons', css); loadCSS(css); }); } } function loadCSS(css) { const style = document.createElement('style'); style.innerHTML = css; document.head.appendChild(style); } //Remove elements from imported content automatically function removeStrongFromHeadings() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, h6, span'); elements.forEach(el => { const strongTags = el.querySelectorAll('strong'); strongTags.forEach(strongTag => { while (strongTag.firstChild) { strongTag.parentNode.insertBefore(strongTag.firstChild, strongTag); } strongTag.remove(); }); }); } removeStrongFromHeadings(); "use strict"; window.onload = () => { /* //This is an object for each category of subjects and in that there are kewords and link to the keywods let keywordsAndLinks = { //you can add more categories and define their keywords and add a link ds: { keywords: [ //you can add more keywords here they are detected and replaced with achor tag automatically 'data science', 'Data science', 'Data Science', 'data Science', 'DATA SCIENCE', ], //we will replace the linktext with the keyword later on in the code //you can easily change links for each category here //(include class="ml-link" and linktext) link: 'linktext', }, ml: { keywords: [ //Add more keywords 'machine learning', 'Machine learning', 'Machine Learning', 'machine Learning', 'MACHINE LEARNING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ai: { keywords: [ 'artificial intelligence', 'Artificial intelligence', 'Artificial Intelligence', 'artificial Intelligence', 'ARTIFICIAL INTELLIGENCE', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, nl: { keywords: [ 'NLP', 'nlp', 'natural language processing', 'Natural Language Processing', 'NATURAL LANGUAGE PROCESSING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, des: { keywords: [ 'data engineering services', 'Data Engineering Services', 'DATA ENGINEERING SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, td: { keywords: [ 'training data', 'Training Data', 'training Data', 'TRAINING DATA', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ias: { keywords: [ 'image annotation services', 'Image annotation services', 'image Annotation services', 'image annotation Services', 'Image Annotation Services', 'IMAGE ANNOTATION SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, l: { keywords: [ 'labeling', 'labelling', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, pbp: { keywords: [ 'previous blog posts', 'previous blog post', 'latest', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, mlc: { keywords: [ 'machine learning course', 'machine learning class', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, }; //Articles to skip let articleIdsToSkip = ['post-2651', 'post-3414', 'post-3540']; //keyword with its related achortag is recieved here along with article id function searchAndReplace(keyword, anchorTag, articleId) { //selects the h3 h4 and p tags that are inside of the article let content = document.querySelector(`#${articleId} .entry-content`); //replaces the "linktext" in achor tag with the keyword that will be searched and replaced let newLink = anchorTag.replace('linktext', keyword); //regular expression to search keyword var re = new RegExp('(' + keyword + ')', 'g'); //this replaces the keywords in h3 h4 and p tags content with achor tag content.innerHTML = content.innerHTML.replace(re, newLink); } function articleFilter(keyword, anchorTag) { //gets all the articles var articles = document.querySelectorAll('article'); //if its zero or less then there are no articles if (articles.length > 0) { for (let x = 0; x < articles.length; x++) { //articles to skip is an array in which there are ids of articles which should not get effected //if the current article's id is also in that array then do not call search and replace with its data if (!articleIdsToSkip.includes(articles[x].id)) { //search and replace is called on articles which should get effected searchAndReplace(keyword, anchorTag, articles[x].id, key); } else { console.log( `Cannot replace the keywords in article with id ${articles[x].id}` ); } } } else { console.log('No articles found.'); } } let key; //not part of script, added for (key in keywordsAndLinks) { //key is the object in keywords and links object i.e ds, ml, ai for (let i = 0; i < keywordsAndLinks[key].keywords.length; i++) { //keywordsAndLinks[key].keywords is the array of keywords for key (ds, ml, ai) //keywordsAndLinks[key].keywords[i] is the keyword and keywordsAndLinks[key].link is the link //keyword and link is sent to searchreplace where it is then replaced using regular expression and replace function articleFilter( keywordsAndLinks[key].keywords[i], keywordsAndLinks[key].link ); } } function cleanLinks() { // (making smal functions is for DRY) this function gets the links and only keeps the first 2 and from the rest removes the anchor tag and replaces it with its text function removeLinks(links) { if (links.length > 1) { for (let i = 2; i < links.length; i++) { links[i].outerHTML = links[i].textContent; } } } //arrays which will contain all the achor tags found with the class (ds-link, ml-link, ailink) in each article inserted using search and replace let dslinks; let mllinks; let ailinks; let nllinks; let deslinks; let tdlinks; let iaslinks; let llinks; let pbplinks; let mlclinks; const content = document.querySelectorAll('article'); //all articles content.forEach((c) => { //to skip the articles with specific ids if (!articleIdsToSkip.includes(c.id)) { //getting all the anchor tags in each article one by one dslinks = document.querySelectorAll(`#${c.id} .entry-content a.ds-link`); mllinks = document.querySelectorAll(`#${c.id} .entry-content a.ml-link`); ailinks = document.querySelectorAll(`#${c.id} .entry-content a.ai-link`); nllinks = document.querySelectorAll(`#${c.id} .entry-content a.ntrl-link`); deslinks = document.querySelectorAll(`#${c.id} .entry-content a.des-link`); tdlinks = document.querySelectorAll(`#${c.id} .entry-content a.td-link`); iaslinks = document.querySelectorAll(`#${c.id} .entry-content a.ias-link`); mlclinks = document.querySelectorAll(`#${c.id} .entry-content a.mlc-link`); llinks = document.querySelectorAll(`#${c.id} .entry-content a.l-link`); pbplinks = document.querySelectorAll(`#${c.id} .entry-content a.pbp-link`); //sending the anchor tags list of each article one by one to remove extra anchor tags removeLinks(dslinks); removeLinks(mllinks); removeLinks(ailinks); removeLinks(nllinks); removeLinks(deslinks); removeLinks(tdlinks); removeLinks(iaslinks); removeLinks(mlclinks); removeLinks(llinks); removeLinks(pbplinks); } }); } //To remove extra achor tags of each category (ds, ml, ai) and only have 2 of each category per article cleanLinks(); */ //Recommended Articles var ctaLinks = [ /* ' ' + '

Subscribe to our AI newsletter!

' + */ '

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

'+ '

Towards AI has published Building LLMs for Production—our 470+ page guide to mastering LLMs with practical projects and expert insights!

' + '
' + '' + '' + '

Note: Content contains the views of the contributing authors and not Towards AI.
Disclosure: This website may contain sponsored content and affiliate links.

' + 'Discover Your Dream AI Career at Towards AI Jobs' + '

Towards AI has built a jobs board tailored specifically to Machine Learning and Data Science Jobs and Skills. Our software searches for live AI jobs each hour, labels and categorises them and makes them easily searchable. Explore over 10,000 live jobs today with Towards AI Jobs!

' + '
' + '

🔥 Recommended Articles 🔥

' + 'Why Become an LLM Developer? Launching Towards AI’s New One-Stop Conversion Course'+ 'Testing Launchpad.sh: A Container-based GPU Cloud for Inference and Fine-tuning'+ 'The Top 13 AI-Powered CRM Platforms
' + 'Top 11 AI Call Center Software for 2024
' + 'Learn Prompting 101—Prompt Engineering Course
' + 'Explore Leading Cloud Providers for GPU-Powered LLM Training
' + 'Best AI Communities for Artificial Intelligence Enthusiasts
' + 'Best Workstations for Deep Learning
' + 'Best Laptops for Deep Learning
' + 'Best Machine Learning Books
' + 'Machine Learning Algorithms
' + 'Neural Networks Tutorial
' + 'Best Public Datasets for Machine Learning
' + 'Neural Network Types
' + 'NLP Tutorial
' + 'Best Data Science Books
' + 'Monte Carlo Simulation Tutorial
' + 'Recommender System Tutorial
' + 'Linear Algebra for Deep Learning Tutorial
' + 'Google Colab Introduction
' + 'Decision Trees in Machine Learning
' + 'Principal Component Analysis (PCA) Tutorial
' + 'Linear Regression from Zero to Hero
'+ '

', /* + '

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

',*/ ]; var replaceText = { '': '', '': '', '
': '
' + ctaLinks + '
', }; Object.keys(replaceText).forEach((txtorig) => { //txtorig is the key in replacetext object const txtnew = replaceText[txtorig]; //txtnew is the value of the key in replacetext object let entryFooter = document.querySelector('article .entry-footer'); if (document.querySelectorAll('.single-post').length > 0) { //console.log('Article found.'); const text = entryFooter.innerHTML; entryFooter.innerHTML = text.replace(txtorig, txtnew); } else { // console.log('Article not found.'); //removing comment 09/04/24 } }); var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = '.post-tags { display:none !important } .article-cta a { font-size: 18px; }'; document.body.appendChild(css); //Extra //This function adds some accessibility needs to the site. function addAlly() { // In this function JQuery is replaced with vanilla javascript functions const imgCont = document.querySelector('.uw-imgcont'); imgCont.setAttribute('aria-label', 'AI news, latest developments'); imgCont.title = 'AI news, latest developments'; imgCont.rel = 'noopener'; document.querySelector('.page-mobile-menu-logo a').title = 'Towards AI Home'; document.querySelector('a.social-link').rel = 'noopener'; document.querySelector('a.uw-text').rel = 'noopener'; document.querySelector('a.uw-w-branding').rel = 'noopener'; document.querySelector('.blog h2.heading').innerHTML = 'Publication'; const popupSearch = document.querySelector$('a.btn-open-popup-search'); popupSearch.setAttribute('role', 'button'); popupSearch.title = 'Search'; const searchClose = document.querySelector('a.popup-search-close'); searchClose.setAttribute('role', 'button'); searchClose.title = 'Close search page'; // document // .querySelector('a.btn-open-popup-search') // .setAttribute( // 'href', // 'https://medium.com/towards-artificial-intelligence/search' // ); } // Add external attributes to 302 sticky and editorial links function extLink() { // Sticky 302 links, this fuction opens the link we send to Medium on a new tab and adds a "noopener" rel to them var stickyLinks = document.querySelectorAll('.grid-item.sticky a'); for (var i = 0; i < stickyLinks.length; i++) { /* stickyLinks[i].setAttribute('target', '_blank'); stickyLinks[i].setAttribute('rel', 'noopener'); */ } // Editorial 302 links, same here var editLinks = document.querySelectorAll( '.grid-item.category-editorial a' ); for (var i = 0; i < editLinks.length; i++) { editLinks[i].setAttribute('target', '_blank'); editLinks[i].setAttribute('rel', 'noopener'); } } // Add current year to copyright notices document.getElementById( 'js-current-year' ).textContent = new Date().getFullYear(); // Call functions after page load extLink(); //addAlly(); setTimeout(function() { //addAlly(); //ideally we should only need to run it once ↑ }, 5000); }; function closeCookieDialog (){ document.getElementById("cookie-consent").style.display = "none"; return false; } setTimeout ( function () { closeCookieDialog(); }, 15000); console.log(`%c 🚀🚀🚀 ███ █████ ███████ █████████ ███████████ █████████████ ███████████████ ███████ ███████ ███████ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ Towards AI is looking for contributors! │ │ Join us in creating awesome AI content. │ │ Let's build the future of AI together → │ │ https://towardsai.net/contribute │ │ │ └───────────────────────────────────────────────────────────────────┘ `, `background: ; color: #00adff; font-size: large`); //Remove latest category across site document.querySelectorAll('a[rel="category tag"]').forEach(function(el) { if (el.textContent.trim() === 'Latest') { // Remove the two consecutive spaces (  ) if (el.nextSibling && el.nextSibling.nodeValue.includes('\u00A0\u00A0')) { el.nextSibling.nodeValue = ''; // Remove the spaces } el.style.display = 'none'; // Hide the element } }); // Add cross-domain measurement, anonymize IPs 'use strict'; //var ga = gtag; ga('config', 'G-9D3HKKFV1Q', 'auto', { /*'allowLinker': true,*/ 'anonymize_ip': true/*, 'linker': { 'domains': [ 'medium.com/towards-artificial-intelligence', 'datasets.towardsai.net', 'rss.towardsai.net', 'feed.towardsai.net', 'contribute.towardsai.net', 'members.towardsai.net', 'pub.towardsai.net', 'news.towardsai.net' ] } */ }); ga('send', 'pageview'); -->