Convert Figma logo to code with AI

ZuzooVn logomachine-learning-for-software-engineers

A complete daily plan for studying to become a machine learning engineer.

28,107
6,195
28,107
26

Top Related Projects

Data science Python notebooks: Deep learning (TensorFlow, Theano, Caffe, Keras), scikit-learn, Kaggle, big data (Spark, Hadoop MapReduce, HDFS), matplotlib, pandas, NumPy, SciPy, Python essentials, AWS, and various command lines.

A curated list of awesome Machine Learning frameworks, libraries and software.

machine learning and deep learning tutorials, articles and other resources

📊 Path to a free self-taught education in Data Science!

🤖 Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained

Machine Learning From Scratch. Bare bones NumPy implementations of machine learning models and algorithms with a focus on accessibility. Aims to cover everything from linear regression to deep learning.

Quick Overview

ZuzooVn/machine-learning-for-software-engineers is a comprehensive GitHub repository that serves as a top-down learning path for software engineers to get into machine learning. It provides a curated list of resources, including courses, books, papers, and tutorials, organized in a structured manner to guide learners through the process of becoming a machine learning engineer.

Pros

  • Offers a well-structured learning path for software engineers transitioning to machine learning
  • Provides a wide range of free and paid resources from reputable sources
  • Regularly updated with new content and community contributions
  • Includes both theoretical and practical resources for a balanced learning approach

Cons

  • May be overwhelming for absolute beginners due to the vast amount of information
  • Some linked resources may become outdated or unavailable over time
  • Lacks hands-on coding examples or projects within the repository itself
  • Primarily focuses on English-language resources, which may limit accessibility for non-English speakers

Code Examples

This repository does not contain code examples as it is a curated list of resources rather than a code library.

Getting Started

As this is not a code library, there are no specific code-based getting started instructions. However, to begin using this resource:

  1. Visit the repository at https://github.com/ZuzooVn/machine-learning-for-software-engineers
  2. Start with the "What is machine learning?" section to gain a basic understanding
  3. Follow the "The Machine Learning Roadmap" to structure your learning journey
  4. Explore the various sections based on your interests and current knowledge level
  5. Bookmark the repository for easy access and check for updates regularly

Competitor Comparisons

Data science Python notebooks: Deep learning (TensorFlow, Theano, Caffe, Keras), scikit-learn, Kaggle, big data (Spark, Hadoop MapReduce, HDFS), matplotlib, pandas, NumPy, SciPy, Python essentials, AWS, and various command lines.

Pros of data-science-ipython-notebooks

  • Provides hands-on, executable code examples in Jupyter notebooks
  • Covers a wide range of data science topics, including machine learning, deep learning, and big data
  • Includes practical examples using popular libraries like scikit-learn, TensorFlow, and Spark

Cons of data-science-ipython-notebooks

  • Focuses primarily on code examples rather than providing a structured learning path
  • May be overwhelming for beginners due to the breadth of topics covered
  • Requires more setup and environment configuration to run the notebooks

Code Comparison

machine-learning-for-software-engineers:

# Machine Learning for Software Engineers

A complete daily plan for studying to become a machine learning engineer.

## What is it?

This is my multi-month study plan for going from software engineer to machine learning engineer.

data-science-ipython-notebooks:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Load and preprocess data
data = pd.read_csv('example_data.csv')
X = data.drop('target', axis=1)
y = data['target']

The machine-learning-for-software-engineers repository provides a structured learning path in markdown format, while data-science-ipython-notebooks offers executable code examples for various data science topics.

A curated list of awesome Machine Learning frameworks, libraries and software.

Pros of awesome-machine-learning

  • More comprehensive coverage of ML topics and resources
  • Regularly updated with new content and contributions
  • Includes a wider range of programming languages and tools

Cons of awesome-machine-learning

  • Less focused on practical implementation for software engineers
  • Can be overwhelming due to the sheer volume of information
  • Lacks a structured learning path for beginners

Code comparison

While both repositories primarily consist of curated lists and don't contain much code, awesome-machine-learning does include some code snippets in its descriptions. For example:

# awesome-machine-learning
from sklearn import svm
X = [[0, 0], [1, 1]]
y = [0, 1]
clf = svm.SVC()
clf.fit(X, y)

machine-learning-for-software-engineers focuses more on providing resources and doesn't include code snippets directly in the repository.

Summary

awesome-machine-learning is a more extensive resource covering a broader range of ML topics and tools. It's regularly updated but can be overwhelming for beginners. machine-learning-for-software-engineers offers a more focused approach for software engineers looking to learn ML, with a structured learning path but less comprehensive coverage.

machine learning and deep learning tutorials, articles and other resources

Pros of Machine-Learning-Tutorials

  • More comprehensive coverage of ML topics, including deep learning and neural networks
  • Includes practical tutorials and hands-on examples for various ML algorithms
  • Regularly updated with new content and resources

Cons of Machine-Learning-Tutorials

  • Less focused on software engineering aspects of ML
  • May be overwhelming for beginners due to the breadth of content
  • Lacks a structured learning path compared to machine-learning-for-software-engineers

Code Comparison

While both repositories primarily focus on curating resources rather than providing code examples, machine-learning-for-software-engineers includes some code snippets for basic ML concepts. For example:

machine-learning-for-software-engineers:

from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

Machine-Learning-Tutorials doesn't typically include code snippets directly in the repository, instead linking to external tutorials and resources that contain code examples.

Both repositories serve as valuable resources for learning machine learning, with machine-learning-for-software-engineers being more tailored for software engineers looking to transition into ML, while Machine-Learning-Tutorials offers a broader range of ML topics and resources for various skill levels.

📊 Path to a free self-taught education in Data Science!

Pros of data-science

  • Comprehensive curriculum covering a wide range of data science topics
  • Structured learning path with clear progression
  • Includes resources from reputable institutions and platforms

Cons of data-science

  • May be overwhelming for beginners or those with limited time
  • Less focused on practical implementation compared to machine-learning-for-software-engineers
  • Requires more self-discipline to follow the entire curriculum

Code comparison

While both repositories primarily focus on educational content rather than code, data-science includes some code examples in its curriculum. Here's a sample from the Python for Data Science course:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('data.csv')
plt.plot(df['x'], df['y'])
plt.show()

machine-learning-for-software-engineers doesn't include direct code examples but rather links to external resources for coding practice.

Summary

data-science offers a more comprehensive and structured approach to learning data science, suitable for those seeking a thorough education. machine-learning-for-software-engineers provides a more focused path for software engineers looking to quickly grasp machine learning concepts and apply them in their work. The choice between the two depends on the learner's background, goals, and available time commitment.

🤖 Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained

Pros of homemade-machine-learning

  • Provides practical implementations of ML algorithms in Python
  • Includes Jupyter notebooks for interactive learning
  • Offers visual explanations and mathematical concepts alongside code

Cons of homemade-machine-learning

  • Focuses on a narrower range of ML topics
  • Less comprehensive in covering the broader field of ML and AI
  • May be more challenging for beginners without prior programming experience

Code Comparison

homemade-machine-learning:

def predict(X):
    return np.dot(X, self.w.T) + self.b

def train(X, y, learning_rate, n_iters):
    n_samples, n_features = X.shape
    self.w = np.zeros(n_features)
    self.b = 0

machine-learning-for-software-engineers:

No direct code implementation available.
This repository is a curated list of resources
and learning paths rather than a code repository.

The machine-learning-for-software-engineers repository is a comprehensive guide and resource collection for learning machine learning, while homemade-machine-learning provides hands-on implementations and explanations of specific ML algorithms. The former offers a broader overview and learning path, while the latter focuses on practical coding examples and mathematical foundations.

Machine Learning From Scratch. Bare bones NumPy implementations of machine learning models and algorithms with a focus on accessibility. Aims to cover everything from linear regression to deep learning.

Pros of ML-From-Scratch

  • Provides actual code implementations of ML algorithms
  • Offers hands-on learning experience for understanding ML concepts
  • Includes a wide range of algorithms, from basic to advanced

Cons of ML-From-Scratch

  • Lacks comprehensive learning resources and explanations
  • May be challenging for beginners without prior ML knowledge
  • Focuses solely on implementation, not on broader ML concepts

Code Comparison

ML-From-Scratch example (k-means clustering):

def predict(self, X):
    y_pred = []
    for sample in X:
        distances = [euclidean_distance(sample, self.centroids[i]) for i in range(self.k)]
        cluster = np.argmin(distances)
        y_pred.append(cluster)
    return y_pred

machine-learning-for-software-engineers doesn't provide code implementations, but rather focuses on curating learning resources and roadmaps for ML education.

Summary

ML-From-Scratch is ideal for those who want to dive deep into ML algorithm implementations, offering a practical approach to understanding how these algorithms work. On the other hand, machine-learning-for-software-engineers serves as a comprehensive guide for learning ML, providing a structured roadmap and curated resources for a broader understanding of the field. The choice between the two depends on the learner's goals and prior knowledge in machine learning.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Top-down learning path: Machine Learning for Software Engineers

Top-down learning path: Machine Learning for Software Engineers GitHub stars GitHub forks

Inspired by Coding Interview University.

Translations: Brazilian Portuguese | 中文版本 | Français | 臺灣華語版本

How I (Nam Vu) plan to become a machine learning engineer

What is it?

This is my multi-month study plan for going from mobile developer (self-taught, no CS degree) to machine learning engineer.

My main goal was to find an approach to studying Machine Learning that is mainly hands-on and abstracts most of the Math for the beginner. This approach is unconventional because it’s the top-down and results-first approach designed for software engineers.

Please, feel free to make any contributions you feel will make it better.


Table of Contents


Why use it?

I'm following this plan to prepare for my near-future job: Machine learning engineer. I've been building native mobile applications (Android/iOS/Blackberry) since 2011. I have a Software Engineering degree, not a Computer Science degree. I have an itty-bitty amount of basic knowledge about: Calculus, Linear Algebra, Discrete Mathematics, Probability & Statistics from university. Think about my interest in machine learning:

I find myself in times of trouble.

AFAIK, There are two sides to machine learning:

  • Practical Machine Learning: This is about querying databases, cleaning data, writing scripts to transform data and gluing algorithm and libraries together and writing custom code to squeeze reliable answers from data to satisfy difficult and ill-defined questions. It’s the mess of reality.
  • Theoretical Machine Learning: This is about math and abstraction and idealized scenarios and limits and beauty and informing what is possible. It is a whole lot neater and cleaner and removed from the mess of reality.

I think the best way for practice-focused methodology is something like 'practice — learning — practice', that means where students first come with some existing projects with problems and solutions (practice) to get familiar with traditional methods in the area and perhaps also with their methodology. After practicing with some elementary experiences, they can go into the books and study the underlying theory, which serves to guide their future advanced practice and will enhance their toolbox of solving practical problems. Studying theory also further improves their understanding on the elementary experiences, and will help them acquire advanced experiences more quickly.

It's a long plan. It's going to take me years. If you are familiar with a lot of this already it will take you a lot less time.

How to use it

Everything below is an outline, and you should tackle the items in order from top to bottom.

I'm using Github's special markdown flavor, including tasks lists to check progress.

  • Create a new branch so you can check items like this, just put an x in the brackets: [x]

More about Github-flavored markdown

Follow me

I'm a Vietnamese Software Engineer who is really passionate and wants to work in the USA.

How much did I work during this plan? Roughly 4 hours/night after a long, hard day at work.

I'm on the journey.

Nam Vu - Top-down learning path: machine learning for software engineers
USA as heck

Don't feel you aren't smart enough

I get discouraged from books and courses that tell me as soon as I open them that multivariate calculus, inferential statistics and linear algebra are prerequisites. I still don’t know how to get started…

About Video Resources

Some videos are available only by enrolling in a Coursera or EdX class. It is free to do so, but sometimes the classes are no longer in session so you have to wait a couple of months, so you have no access. I'm going to be adding more videos from public sources and replacing the online course videos over time. I like using university lectures.

Prerequisite Knowledge

This short section consists of prerequisites/interesting info I wanted to learn before getting started on the daily plan.

The Daily Plan

Each subject does not require a whole day to be able to understand it fully, and you can do multiple of these in a day.

Each day I take one subject from the list below, read it cover to cover, take notes, do the exercises and write an implementation in Python or R.

Motivation

Machine learning overview

Machine learning mastery

Machine learning is fun

Inky Machine Learning

Machine Learning: An In-Depth Guide

Stories and experiences

Machine Learning Algorithms

Beginner Books

Practical Books

Kaggle knowledge competitions

Video Series

MOOC

Resources

Games

Becoming an Open Source Contributor

Podcasts

Communities

Conferences

  • Neural Information Processing Systems (NIPS)
  • International Conference on Learning Representations (ICLR)
  • Association for the Advancement of Artificial Intelligence (AAAI)
  • IEEE Conference on Computational Intelligence and Games (CIG)
  • IEEE International Conference on Machine Learning and Applications (ICMLA)
  • International Conference on Machine Learning (ICML)
  • International Joint Conferences on Artificial Intelligence (IJCAI)
  • Association for Computational Linguistics (ACL)

Interview Questions

My admired companies