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

The 2021 Python Developer RoadMap
Programming

The Python Developer RoadMap

Last Updated on January 26, 2022 by Editorial Team

Author(s): Kunal Ajay Kulkarni

An all-in-one guide to becoming a Python Developer with links to useful courses!

Photo by Francesco Ungaro on Unsplash

Python is one of the most desired programming languages by data scientists, software engineers, and developers due to its absolute versatility. Python is an interpreted and general-purpose programming language. We can use Python in diverse fields such as software development, web development, web scraping, data science, machine learning, artificial intelligence, competitive programming, and much more. It is no wonder that this kind of versatility has made Python the most sought-after language to learn in 2021.

Unsplash

Therefore, in this article, we will discuss the well-structured roadmap needed to become a successful Python developer. We will cover the following things in this blogpost —

  1. Why become a Python developer?
  2. How to become a Python developer?
  3. List of Python Projects

Why become a Python developer?

There are several reasons why you should start your programming career by learning Python. First, Python is easy to understand and has simple syntax and readability. It makes learning the language easy for beginners as well as intermediate programmers. Second, Python is a general-purpose programming language with excellent analytical capabilities and a wide range of useful libraries. This quality of Python makes it possible for a programmer to spend more time on the development of different applications.

Photo by Tudor Baciu on Unsplash

Python allows developers to write fewer lines of code for programs that require more lines of code in other languages. For example, Python programs are slower than Java, but they also take much less time to develop since Python codes are three to five times shorter than Java codes. Some other factors are —

  1. Python is open-source and is free to use across all operating systems
  2. It is the most productive language
  3. You can do several things with Python
  4. Python has a vast and active community
  5. It has hundreds of built-in libraries and frameworks
Photo by Dean Pugh on Unsplash

Organizations like Google, Facebook, Netflix, IBM, and many others use Python for diverse tasks such as software development, Machine Learning, Web Development, and much more. By looking at the increasing popularity of Python, you can imagine how useful it is to learn Python.

How to become a Python developer?

First, we will start with some essential skills and computer fundamentals you will require to become a Python developer —

Stage 1 — Computer Fundamentals

1.Git

Git is one of the most popular version control systems. Git is an open-source, free software used for several things such as tracking the changes in the set of files, developing and managing the source code during the software development. Please check the following resources to learn more about Git —

  1. Version Control with Git (Coursera)
  2. Version Control with Git (Udacity)
  3. Learn Git (Codecademy)
  4. Git Documentation

2. Linux Command Line Basics

Linux command line is also an essential thing to learn for any programmer. I would recommend you to spend some time learning at least the basics of these commands. These commands come in very handy if you aspire to become a Python developer. These resources will help you to learn more about Linux Commands for free —

  1. The Linux command line for beginners (Ubuntu)
  2. Linux Command Line Basics (Udacity)

3. GitHub

Do you know that almost every recruiter today asks for a GitHub profile? It is an excellent place to build your online portfolio and showcase your skills. Having a GitHub profile helps you to stand out from the crowd. Your GitHub profile is the first thing recruiter will look at when you apply for competitive roles such as data scientist, ML engineer, web developer, or Python developer. It gives an idea to recruiters about your coding abilities, problem-solving skills, and your approach to problem-solving. You have a better chance of standing out if you have a well-maintained, up-to-date GitHub profile.

No doubt that GitHub is a valuable skill to have, and it will help you to excel professionally. Millions of developers use GitHub to share their code and build an online portfolio. Please refer to this blog and following courses to learn more about GitHub for free —

  1. Introduction to Git and GitHub (Coursera)
  2. GitHub Learning Lab (GitHub)
  3. GitHub Ultimate: Master Git and GitHub — Beginner to Expert (Udemy)

Stage 2: — Python Basics

Once we complete the Computer Programming Fundamentals, we will move towards learning the basics of Python programming. These are the topics you should learn to master the Python basics —

  1. Hello World with Python 3
  2. Basic Syntax
  3. Code Editors like Vim, Jupyter Notebook, Google Colab, Atom.
  4. Indentation
  5. Loops, Logical Operators
  6. Data types and Variables
  7. Operators
  8. Strings and Numbers
  9. Conditional statements and type conversion
  10. Functions and Built-in Functions

Where to learn?

There is no scarcity of resources when it comes to learning Python. You can find millions of free resources online to learn Python. Some of them are —

  1. Python for Everybody Specialization (Coursera)
  2. Python 3 Programming (Coursera)
  3. Introduction to Python Programming (edX)
  4. CS50’s Web Programming with Python and JavaScript (edX)
  5. Learn Python 3 (Codecademy)

Stage 3 — Data Structures and Algorithms in Python

After finishing the Python Basics, we will move towards the most important part of Python, Data Structures and Algorithms (DSA). They are the foundational blocks of any programming language. DSA is a must-have for both software development and coding interviews. These are the topics you should learn to master the DSA —

  1. Arrays and Linked Lists
  2. Binary Search Trees, Recursion
  3. Python Lists
  4. Tuples, Dictionaries, Sets, and Slicing
  5. Stacks and Queues
  6. Hashing, Hash Tables, Graph Traversing
  7. Sorting algorithms, Divide and Conquer
  8. Dynamic Programming

Check out the following resources for free to learn about Python DSA —

  1. Data Structures and Algorithms in Python (Jovian.ai)
  2. Mastering Data Structures and Algorithms in Python
  3. The Complete Data Structures and Algorithms Course in Python (Udemy)
  4. Intro to Data Structures and Algorithms (Udacity)
  5. Data Structures With Python (Geeks-for-Geeks)

Stage 4 — Advanced Python

After finishing the Python DSA, we will move towards some of the advanced concepts in Python. The relevant topics here are —

  1. Object-Oriented Programming
  2. Methods
  3. Functional Programming
  4. Inheritance
  5. Dunder
  6. Classes
  7. Decorators
  8. Lambda Functions
  9. Decorators
  10. Regular Expressions

Check out the following resources for free to learn about advanced Python —

  1. The Complete Python 3 Course: Beginner to Advanced! (Udemy)
  2. Learn Python Programming Masterclass (Udemy)

Stage 5 — Modules, Packages, I/O operators, and File Handling

After completing advanced concepts, we will move towards modules, packages, and file handling in Python. The relevant topics are —

  1. Numerical Modules, Random Modules, Counter, sys modules
  2. defaultdict and OrderedDict modules
  3. Pip and PyPI packages, DateTime, calendar modules
  4. Read/Write Files in Python
  5. Rename/Copy/managing files in Python
  6. OS Modules
  7. Zipping Files and Directories

Check out the following resources for free to learn about modules, package —

Applications of Python —

Image Source

Python has a large number of applications due to its versatile nature. Below are some of the few application areas you can explore with Python with its libraries and frameworks. After mastering the above concepts, you are free to choose a career path that interests you.

Path 1 — Towards Data Science

Photo by Boitumelo Phetla on Unsplash

Harvard Business Review named Data Science as One of the Hottest Fields of the 21st Century. Data Science is an interdisciplinary field that uses algorithms, math, stats to extract meaningful insights from the data. Following are the things you should consider learning if you want to start your career in Data Science —

  1. Libraries such as Matplotlib, Pandas, NumPy, Seaborn
  2. Math and Stats
  3. Data Visualization
  4. Data Manipulation, Data Analysis, and Interpretation
  5. Database Management

There is no lack of resources when it comes to learning Data Science with Python. Check out the following resources to learn about Data Science with Python for free —

  1. Applied Data Science with Python Specialization (Coursera)
  2. Data Scientist with Python (Datacamp)
  3. Python Data Science Tutorials (realpython.org)
  4. IBM Data Science Professional Certificate (Coursera)
  5. Statistics with Python Specialization (Coursera)

Path 2 — Web Development

Photo by Eftakher Alam on Unsplash

Please refer to this blog post if you are considering a career in Web Development. Things to consider while learning Web Development are

  1. Frontend Developer
  2. Backend Developer
  3. HTML, CSS
  4. Django, Flask
  5. JavaScript, TypeScript
  6. Angular, React JS, Vue.js
  7. Node.js, Ruby, PHP, MySQL

Check out the following resources to learn Web Development for free —

  1. Web Design for Everybody: Basics of Web Development & Coding Specialization (Coursera)
  2. HTML, CSS, and JavaScript for Web Developers (Coursera)
  3. IBM Full Stack Cloud Developer Professional Certificate (Coursera)
  4. HTML & CSS BY (W3School)
  5. Web Development Career Path (Codecademy)

Path 3 — Towards Machine Learning and Artificial Intelligence

Photo by Katarzyna Pe on Unsplash

Machine Learning is one of the fastest-growing fields today. You should learn the following things if you are interested in starting your career in the field of ML and AI —

  1. Applied Math and Stats
  2. Machine Learning Algorithms
  3. Libraries such as sci-kit learn, TensorFlow, Keras
  4. Prediction Model
  5. Neural Networks for Deep Learning
  6. Natural Language Processing

There are tons of resources available on the internet when it comes to Machine Learning. Check out the following resources to learn ML and AI for free —

  1. Machine Learning by Stanford (Coursera)
  2. Professional Certificate in Computer Science for Artificial Intelligence By HarvardX (edX)
  3. Machine Learning Foundations: A Case Study Approach (Coursera)
  4. Deep Learning Specialization (Coursera)
  5. DeepLearning.AI TensorFlow Developer Professional Certificate (Coursera)
  6. Natural Language Processing Specialization (Coursera)

Path 4 — Web Scraping, Computer Vision, and Automation Testing

Photo by Igor Miske on Unsplash

Things to consider while learning Web Scraping and Automation Testing are —

  1. Web Scraping using BeautifulSoup, Requests libraries
  2. Selenium Web Driver
  3. Selenium Grid
  4. Computer Vision using OpenCV

Check out the following resources —

  1. TensorFlow: Advanced Techniques Specialization (Coursera)
  2. Introduction to Computer Vision and Image Processing (Coursera)
  3. Introduction to Computer Vision (Udacity)
  4. Deep Learning for Computer Vision (NPTEL)
  5. Using Python to Access Web Data (Coursera)
  6. Learning Python Test Automation (Automation Panda)
  7. Selenium Web driver with Python from Scratch + Frameworks (Udemy)

Stage 5 — Personal Python Projects

Photo by Octavian Dan on Unsplash

Building hands-on projects with Python as a programming language will help you gain practical coding skills. Working on your projects will boost your self-confidence and will help you to understand all the programming concepts. You will be using technical knowledge to build an impressive portfolio. It is the best way to show off your coding skills to future recruiters.

Thanks for reading! If you have any doubts or suggestions for me, feel free to say hi!


The 2021 Python Developer RoadMap was originally published in Towards AI on Medium, where people are continuing the conversation by highlighting and responding to this story.

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'); -->