Awesome CS Courses 
Introduction
There is a lot of ~~hidden~~ treasure lying within university pages scattered across the internet. This list is an attempt to bring to light those awesome CS courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free.
Table of Contents
- Algorithms
- Artificial Intelligence
- Computer Graphics
- CS Theory
- Introduction to CS
- Machine Learning
- Misc
- Programming Languages / Compilers
- Security
- Systems
Legend
- Lecture Videos
- Lecture Notes
- Assignments / Labs
- Readings
Courses
Systems
- CS 61C Great Ideas in Computer Architecture (Machine Structures) UC Berkeley


- The subjects covered in this course include: C and assembly language programming, translation of high-level programs into machine language, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics.
- Lecture Videos
- Lecture Notes
- Resources
- Old Exams
- CS 107 Computer Organization & Systems Stanford University

- CS107 is the third course in Stanford's introductory programming sequence. The course will work from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness.
- Lecture Videos
- Assignments
- CS 140 Operating Systems Stanford University

- This class introduces the basic facilities provided in modern operating systems. The course divides into three major sections. The first part of the course discusses concurrency. The second part of the course addresses the problem of memory management. The third major part of the course concerns file systems.
- Lecture Notes
- Assignments
- 6.004 Computation Structures MIT

- Introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. Multilevel implementation strategies; definition of new primitives (e.g., gates, instructions, procedures, processes) and their mechanization using lower-level elements. Analysis of potential concurrency; precedence constraints and performance measures; pipelined and multidimensional systems. Instruction set design issues; architectural support for contemporary software structures. 4 Engineering Design Points. 6.004 offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops of series of building blocks logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples.
- Youtube Playlist
- Lecture Notes
- Labs-Assignments
- CS 162 Operating Systems and Systems Programming UC Berkeley

- The purpose of this course is to teach the design of operating systems and operating systems concepts that appear in other advanced systems. Topics we will cover include concepts of operating systems, systems programming, networked and distributed systems, and storage systems, including multiple-program systems (processes, interprocess communication, and synchronization), memory allocation (segmentation, paging), resource allocation and scheduling, file systems, basic networking (sockets, layering, APIs, reliability), transactions, security, and privacy.
- Operating Systems course by the Chair of EECS, UC Berkeley David Culler
- Lecture Videos Spring 2015 lectures
- Lecture Notes Spring 2015 lectures
- The purpose of this course is to teach the design of operating systems and operating systems concepts that appear in other advanced systems. Topics we will cover include concepts of operating systems, systems programming, networked and distributed systems, and storage systems, including multiple-program systems (processes, interprocess communication, and synchronization), memory allocation (segmentation, paging), resource allocation and scheduling, file systems, basic networking (sockets, layering, APIs, reliability), transactions, security, and privacy.
- CS 168 Introduction to the Internet: Architecture and Protocols UC Berkeley

- This course is an introduction to the Internet architecture. We will focus on the concepts and fundamental design principles that have contributed to the Internet's scalability and robustness and survey the various protocols and algorithms used within this architecture. Topics include layering, addressing, intradomain routing, interdomain routing, reliable delivery, congestion control, and the core protocols (e.g., TCP, UDP, IP, DNS, and HTTP) and network technologies (e.g., Ethernet, wireless).
- Lecture Notes & Assignments
- Discussion Notes
- CS 179 GPU Programming Caltech

- This course will cover programming techniques for the GPU. The course will introduce NVIDIA's parallel computing language, CUDA. Beyond covering the CUDA programming model and syntax, the course will also discuss GPU architecture, high performance computing on GPUs, parallel algorithms, CUDA libraries, and applications of GPU computing.
- Assignments
- Lecture Notes
- CS 186 Introduction to Database Systems UC Berkeley

- In the project assignments in CS186, you will write a basic database management system called SimpleDB. For this project, you will focus on implementing the core modules required to access stored data on disk; in future projects, you will add support for various query processing operators, as well as transactions, locking, and concurrent queries.
- Lecture Videos
- Lecture Notes
- Projects
- CS 241 Systems Programming (Spring 2016) Univ of Illinois, Urbana-Champaign

- System programming refers to writing code that tasks advantage of operating system support for programmers. This course is designed to introduce you to system programming. By the end of this course, you should be proficient at writing programs that take full advantage of operating system support. To be concrete, we need to fix an operating system and we need to choose a programming language for writing programs. We chose the C language running on a Linux/UNIX operating system (which implements the POSIX standard interface between the programmer and the OS).
- Assignments
- Labs
- Github Page
- Crowd Sourced Book
- CS 425 Distributed Systems Univ of Illinois, Urbana-Champaign

- Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2016 version by Prof Indranil Gupta.
- Lectures
- Assignments
- CS 452 Real-Time Programming University of Waterloo

- Write a real-time OS microkernel in C, and application code to operate a model train set in response to real-time sensor information. The communication with the train set runs at 2400 baud so it takes about 61 milliseconds to ask all of the sensors for data about the train's possible location. This makes it particularly challenging because a train can move about 3 centimeters in that time. One of the most challenging and time-consuming courses at the University of Waterloo.
- Assignments
- Lecture notes
- CS 2043 Unix Tools & Scripting Cornell University


- UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course provides an intensive training to develop skills in Unix command line tools and scripting that enable the accomplishment and automation of large and challenging computing tasks. The syllabus takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python.
- Syllabus
- Lectures
- Assignments
- CS 3410 Computer System Organization and Programming Cornell University


- CS3410 provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor.
- Lectures
- Assignments
- CS 4410 Operating Systems Cornell University


- CS 4410 covers systems programming and introductory operating system design and implementation. We will cover the basics of operating systems, namely structure, concurrency, scheduling, synchronization, memory management, filesystems, security and networking. The course is open to any undergraduate who has mastered the material in CS3410/ECE3140.
- Syllabus
- Lectures
- CS 4414 Operating Systems University of Virginia

- A course (that) covers topics including: Analysis process communication and synchronization; resource management; virtual memory management algorithms; file systems; and networking and distributed systems. The primary goal of this course is to improve your ability to build scalable, robust and secure computing systems. It focuses on doing that by understanding what underlies the core abstractions of modern computer systems.
- Syllabus
- Lectures
- CS 5412 Cloud Computing Cornell University

- Taught by one of the stalwarts of this field, Prof Ken Birman, this course has a fantastic set of slides that one can go through. The Prof's book is also a gem and recommended as a must read in Google's tutorial on Distributed System Design
- Slides
- CSCE 3613 Operating Systems University of Arkansas (Fayetteville)

- An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies.
- CSCI-UA.0202: Operating Systems (Undergrad) Operating Systems NYU
- NYU's operating system course. It's a fundamental course focusing basic ideas of operating systems, including memory management, process shceduling, file system, ect. It also includes some recommended reading materials. What's more, there are a series of hands-on lab materials, helping you easily understand OS.
- Assignments
- Lectures
- Old Exams
- CSCI 360 Computer Architecture 3 CUNY Hunter College

- A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs.
- CSCI 493.66 UNIX System Programming (formerly UNIX Tools) CUNY Hunter College

- A course that is mostly about writing programs against the UNIX API, covering all of the basic parts of the kernel interface and libraries, including files, processes, terminal control, signals, and threading.
- CSCI 493.75 Parallel Computing CUNY Hunter College

- The course is an introduction to parallel algorithms and parallel programming in C and C++, using the Message Passing Interface (MPI) and the OpenMP application programming interface. It also includes a brief introduction to parallel architectures and interconnection networks. It is both theoretical and practical, including material on design methodology, performance analysis, and mathematical concepts, as well as details on programming using MPI and OpenMP.
- Hack the Kernel Introduction to Operating Systems SUNY University at Buffalo, NY

- This course is an introduction to operating system design and implementation. We study operating systems because they are examples of mature and elegant solutions to a difficult design problem: how to safely and efficiently share system resources and provide abstractions useful to applications.
- For the processor, memory, and disks, we discuss how the operating system allocates each resource and explore the design and implementation of related abstractions. We also establish techniques for testing and improving system performance and introduce the idea of hardware virtualization. Programming assignments provide hands-on experience with implementing core operating system components in a realistic development environment. Course by Dr.Geoffrey Challen
- Syllabus
- Slides
- Video lectures
- Assignments
- Old Exams
- ECE 459 Programming for Performance University of Waterloo

- Learn techniques for profiling, rearchitecting, and implementing software systems that can handle industrial-sized inputs, and to design and build critical software infrastructure. Learn performance optimization through parallelization, multithreading, async I/O, vectorization and GPU programming, and distributed computing.
- Lecture slides
- ECGR4101/5101 Embedded Systems using the Renesas RX63N Processor University of North Carolina at Charlotte

- Introduction to designing microcontroller-based embedded computer systems using assembly and C programs. Examination of Real-time Operating Systems and their impact on performance. Computer engineering applications will be emphasized.
- The goal of this course is to solidify and build upon a student’s knowledge of computer organization by presenting hands-on experience with microcontrollers. Students will also examine a few sensors that are used in commercial and medical products and learn how to interface them in a microcontroller system.
- Lecture Videos
- Lecture Notes
- PODC Principles of Distributed Computing ETH-Zurich

- Explore essential algorithmic ideas and lower bound techniques, basically the "pearls" of distributed computing in an easy-to-read set of lecture notes, combined with complete exercises and solutions.
- Book
- Assignments and Solutions
- SPAC Parallelism and Concurrency Univ of Washington

- Technically not a course nevertheless an awesome collection of materials used by Prof Dan Grossman to teach parallelism and concurrency concepts to sophomores at UWash
- 6.824 Distributed Systems MIT

- MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang!
- Assignments - Just do
git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824 - Readings
- 6.828 Operating Systems MIT

- MIT's operating systems course focusing on the fundamentals of OS design including booting, memory management, environments, file systems, multitasking, and more. In a series of lab assignments, you will build JOS, an OS exokernel written in C.
- Assignments
- Lectures
- Videos Note: These are student recorded cam videos of the 2011 course. The videos explain a lot of concepts required for the labs and assignments.
- CSEP 552 Distributed Systems University of Washington

- CSEP552 is a graduate course on distributed systems. Distributed systems have become central to many aspects of how computers are used, from web applications to e-commerce to content distribution. This course will cover abstractions and implementation techniques for the construction of distributed systems, including client server computing, the web, cloud computing, peer-to-peer systems, and distributed storage systems. Topics will include remote procedure call, maintaining consistency of distributed state, fault tolerance, high availability, and other topics. As we believe the best way to learn the material is to build it, there will be a series of hands-on programming projects.
- Lectures of a previous session are available to watch.
- 15-213 Introduction to Computer Systems (ICS) Carnegie-Mellon University

- The ICS course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.
- This is the must-have course for everyone in CMU who wants to learn some computer science no matter what major are you in. Because it's CMU (The course number is as same as the zip code of CMU)!
- Lecture Notes
- Videos
- Assignments
- 15-319/619 Cloud Computing (ICS) Carnegie-Mellon University
- This project-based on-line course focuses on skill building across various aspects of cloud computing. We cover conceptual topics and provide hands-on experience through projects utilizing public cloud infrastructures (Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP)). The adoption of cloud computing services continues to grow across a variety of organizations and in many domains. Simply, cloud computing is the delivery of computing as a service over a network, whereby distributed resources and services are rented, rather than owned, by an end user as a utility.
- For the projects, students will work with Amazon Web Services, Microsoft Azure and Google Cloud Platform, use them to rent and provision compute resources and then program and deploy applications that run on these resources. Students will develop and evaluate virtual machine (VM) and container scaling, elasticity and load balancing solutions. In addition, students will work with cloud storage systems and learn to develop different applications using batch, iterative and stream processing frameworks. 15-619 students will have to complete an extra project which entails designing and implementing a complete web-service solution for querying big data. For the extra project, the student teams are evaluated based on the cost and performance of their web service.
- Lecture Notes
- Videos
- 15-418 Parallel Computer Architecture and Programming Carnegie-Mellon University

- The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.
- Assignments
- Lecture Notes
- Lecture Videos
- Readings
- 15-440 Distributed Systems Carnegie-Mellon University

- Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language.
- Assignments
- 15-721 Database Systems Carnegie-Mellon University

- This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in both high-performance transaction processing systems (OLTP) and large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas. All class projects will be in the context of a real in-memory, multi-core database system. The course is appropriate for graduate students in software systems and for advanced undergraduates with strong systems programming skills.
- Assignments
- Lecture Videos
- Readings
- 15-445/645 Database Systems Carnegie-Mellon University

- This course covers fundamental topics of DBMS, compared to CMU 15-721.
- Assignments
- Lecture Videos
- Readings
- 15-749 Engineering Distributed Systems Carnegie-Mellon University
- A project focused course on Distributed Systems with an awesome list of readings
- Readings
- 18-447 Introduction to Computer Architecture CMU

- Very comprehensive material on Computer Architecture - definitely more than just "introduction". Online material is very user-friendly, even the recitation videos available online. This is the Spring'15 version by Prof. Onur Mutlu
- Lectures and Recitation
- Homeworks 7 HWs with answer set as well
- Readings
Programming Languages / Compilers
- CS 75 Principles of Compiler Design Swathmore College

- Modelled after the influential paper on incremental approach to compiler design, this course teaches how to build a compiler in OCaml
- Course on Github
- Notes
- CS 91 Introduction to Programming Languages Swathmore College
- CIS 194 Introduction to Haskell Penn Engineering

- Explore the joys of functional programming, using Haskell as a vehicle. The aim of the course will be to allow you to use Haskell to easily and conveniently write practical programs.
- Previous semester also available, with more exercises
- CIS 198 Rust Programming UPenn

- This course covers what makes Rust so unique and applies it to practical systems programming problems. Topics covered include traits and generics; memory safety (move semantics, borrowing, and lifetimes); Rust’s rich macro system; closures; and concurrency.
- Assignments
- Clojure Functional Programming with Clojure University of Helsinki

- The course is an introduction to functional programming with a dynamically typed language Clojure. We start with an introduction to Clojure; its syntax and development environment. Clojure has a good selection of data structures and we cover most of them. We also go through the basics of recursion and higher-order functions. The course material is in English.
- Github Page
- CMSC 430 Introduction to Compilers Univ of Maryland

- The goal of CMSC 430 is to arm students with the ability to design, implement, and extend a programming language. Throughout the course, students will design and implement several related languages, and will explore parsing, syntax querying, dataflow analysis, compilation to bytecode, type systems, and language interoperation.
- Lecture Notes
- Assignments
- COS 326 Functional Programming Princeton University

- Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language
- Lectures
- Assignments
- CS 143 Compiler construction Stanford University


- CS143 is a Stanford's course in the practical and theoretical aspects of compiler construction.
- Home
- Syllabus
- Lectures
- Assignments
- CS143 - 2011
- CS 164 Hack your language! UC Berkeley

- Introduction to programming languages by designing and implementing domain-specific languages.
- Lecture Videos
- Code for Assignments
- CS 173 Programming Languages Brown University

- Course by Prof. Krishnamurthi (author of HtDP) and numerous other awesome books on programming languages. Uses a custom designed Pyret programming language to teach the concepts. There was an online class hosted in 2012, which includes all lecture videos for you to enjoy.
- Videos
- Assignments
- CS 223 Purely Functional Data Structures In Elm University of Chicago

- This course teaches functional reactive programming and purely functional data structures based on Chris Okazaki's book and using the Elm programming language.
- Lectures
- Assignments
- CS 240h Functional Systems in Haskell Stanford University

- Building software systems in Haskell
- Lecture Slides
- 3 Assignments: Lab1, Lab2, Lab3
- CS 421 Programming Languages and Compilers Univ of Illinois, Urbana-Champaign
Course that uses OCaml to teach functional programming and programming language design.
- CS 3110 Data Structures and Functional Programming Cornell University

- Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming.
- Lecture Slides
- Assignments
- CS 4120 Introduction to Compilers Cornell University


- An introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages. As part of the course, students build a working compiler for an object-oriented language.
- Syllabus
- Lectures
- Assignments
- CS 4400 Programming Languages Northeastern University

- This is a course on the study, design, and implementation of programming languages.
- The course works at two simultaneous levels: first, we will use a programming language that can demonstrate a wide variety of programming paradigms. Second, using this language, we will learn about the mechanics behind programming languages by implementing our own language(s). The two level approach usually means that we will often see how to use a certain feature, and continue by implementing it.
- Syllabus
- Lecture Notes/Resources
- CS 4610 Programming Languages and Compilers University of Virginia

- Course that uses OCaml to teach functional programming and programming language design. Each assignment is a part of an interpreter and compiler for an object-oriented language similar to Java, and you are required to use a different language for each assignment (i.e., choose 4 from Python, JS, OCaml, Haskell, Ruby).
- Lecture Notes
- Assignments
- CS 5114 Network Programming Languages Cornell University


- This course provides an introduction to the languages used to program computer networks. It will examine recent proposals based on logic, functional, and distributed languages, as well as tools for establishing correctness using automatic solvers, model checkers, and proof assistants.
- Syllabus
- Lectures
- CS 5142 Scripting Languages Cornell University


- Perl, PHP, JavaScript, VisualBasic -- they are often-requested skills for employment, but most of us do not have the time to find out what they are all about. In this course, you learn how to use scripting languages for rapid prototyping, web programming, data processing, and application extension. Besides covering traditional programming languages concepts as they apply to scripting (e.g., dynamic typing and scoping), this course looks at new concepts rarely found in traditional languages (e.g., string interpolation, hashes, and polylingual code). Through a series of small projects, you use different languages to achieve programming tasks that highlight the strengths and weaknesses of scripting. As a side effect, you practice teaching yourself new languages.
- Syllabus
- Lectures
- Assignments
- CS 5470 Compilers University of Utah

- If you're a fan of Prof Matt's writing on his fantastic blog you ought to give this a shot. The course covers the design and implementation of compilers, and it explores related topics such as interpreters, virtual machines and runtime systems. Aside from the Prof's witty take on cheating the page has tons of interesting links on programming languages, parsing and compilers.
- Lecture Notes
- Projects
- CS 6118 Types and Semantics Cornell University


- Types and Semantics is about designing and understand programming languages, whether they be domain specific or general purpose. The goal of this class is to provide a variety of tools for designing custom (programming) languages for whatever task is at hand. Part of that will be a variety of insights on how languages work along with experiences from working with academics and industry on creating new languages such as Ceylon and Kotlin. The class focuses on types and semantics and the interplay between them. This means category theory and constructive type theory (e.g. Coq and richer variations) are ancillary topics of the class. The class also covers unconventional semantic domains such as classical linear type theory in order to both break students from conventional thinking and to provide powerful targets capable of formalizing thinks like networking protocols, resource-sensitive computation, and concurrency constructs. The class project is to design and formalize a (programming) language for a purpose of the student's choosing, and assignments are designed to ensure students have had a chance to practice applying the techniques learned in class before culminating these skills in the class project.
- Syllabus
- Lectures
- CSC 253 CPython internals: A ten-hour codewalk through the Python interpreter source code University of Rochester


- Nine lectures walking through the internals of CPython, the canonical Python interpreter implemented in C. They were from the Dynamic Languages and Software Development course taught in Fall 2014 at the University of Rochester.
- CSE 341 Programming Languages University of Washington

- Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages.
- Lectures and Videos
- Assignments and Tests
- CSE P 501 Compiler Construction University of Washington

- Teaches understanding of how a modern compiler is structured and the major algorithms that are used to translate code from high-level to machine language. The best way to do this is to actually build a working compiler, so there will be a significant project to implement one that translates programs written in a core subset of Java into executable x86 assembly language. The compilers themselves will use scanner and parser generator tools and the default implementation language is Java.
- Lectures
- Assignments, Tests, and Solutions
- DMFP Discrete Mathematics and Functional Programming Wheaton College

- A course that teaches discrete maths concepts with functional programming
- Lecture Videos
- Assignments
- PCPP Practical Concurrent and Parallel Programming IT University of Copenhagen



- In this MSc course you learn how to write correct and efficient concurrent and parallel software, primarily using Java, on standard shared-memory multicore hardware.
- The course covers basic mechanisms such as threads, locks and shared memory as well as more advanced mechanisms such as parallel streams for bulk data, transactional memory, message passing, and lock-free data structures with compare-and-swap.
- It covers concepts such as atomicity, safety, liveness and deadlock.
- It covers how to measure and understand performance and scalability of parallel programs.
- It covers tools and methods to find bugs in concurrent programs.
- 6.945 Adventures in Advanced Symbolic Programming MIT



- Taught by Gerald Sussman of SICP fame, this class deals with concepts and techniques for the design an implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications.
- Assignments: Extensive programming assignments, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or other "functional" language.
- Readings
- CS 696 Functional Design and Programming San Diego State University



- Covers functional programming basis using Clojure.
- Topics include testing, functional programming, immutable collections and concurrency.
- Also includes assignments covering Clojurescript, Reagent etc.
- L28 Advanced Functional Programming University of Cambridge



- This module aims to teach students how to use the features of modern typed functional programming languages (e.g. OCaml, Haskell) to design and implement libraries and DSLs. It aims to demonstrate how such techniques can improve both correctness and efficiency. Students wishing to take the module should have some experience of a typed functional programming language and an understanding of type inference.
- This particular session was taught by a prominent OCaml programmer, open Source contributor & author of real world OCaml - Dr Anil Madhavapeddy.
Algorithms
- CS 61B Data Structures UC Berkeley

- In this course, you will study advanced programming techniques including data structures, encapsulation, abstract data types, interfaces, and algorithms for sorting and searching, and you will get a taste of “software engineering”—the design and implementation of large programs.
- Full Lecture Materials Lecture of Spring 2016. This website contains full matrials including video links, labs, homeworks, projects. Very good for self-learner. Also a good start for Java. And it includes some other useful resources for Java Documentation, Data Structure Resources, Git/GitHub and Java Development Resources. Resources
- Labs The link to labs and projects is included in the website.
- Lecture Videos
- CS 97SI Introduction to Competitive Programming Stanford University

- Fantastic repository of theory and practice problems across various topics for students who are interested to participate in ACM-ICPC.
- Lectures and Assignments
- CS 224 Advanced Algorithms Harvard University

- CS 224 is an advanced course in algorithm design, and topics we will cover include the word RAM model, data structures, amortization, online algorithms, linear programming, semidefinite programming, approximation algorithms, hashing, randomized algorithms, fast exponential time algorithms, graph algorithms, and computational geometry.
- Lecture Videos (Youtube)
- Assignments
- CS 261 A Second Course in Algorithms Stanford University

- Algorithms for network optimization: max-flow, min-cost flow, matching, assignment, and min-cut problems. Introduction to linear programming. Use of LP duality for design and analysis of algorithms. Approximation algorithms for NP-complete problems such as Steiner Trees, Traveling Salesman, and scheduling problems. Randomized algorithms. Introduction to online algorithms.
- Lecture Notes, Videos & Assignments (Youtube)
- CS 473/573 Fundamental Algorithms Univ of Illinois, Urbana-Champaign

- Algorithms class covering recursion, randomization, amortization, graph algorithms, network flows and hardness. The lecture notes by Prof. Erikson are comprehensive enough to be a book by themselves. Highly recommended!
- Lecture Notes
- Labs and Exams
- CS 2150 Program & Data Representation University of Virginia

- This data structures course introduces C++, linked-lists, stacks, queues, trees, numerical representation, hash tables, priority queues, heaps, huffman coding, graphs, and x86 assembly.
- Lectures
- Assignments
- CS 4820 Introduction to Analysis of Algorithms Cornell University

- This course develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), computability theory focusing on undecidability, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and local search heuristics.
- Lectures
- Syllabus
- CSCI 104 Data Structures and Object Oriented Design
University of Southern California (USC)
- CSCI 135 Software Design and Analysis I
CUNY Hunter College- It is currently an intensive introduction to program development and problem solving. Its emphasis is on the process of designing, implementing, and evaluating small-scale programs. It is not supposed to be a C++ programming course, although much of the course is spent on the details of C++. C++ is an extremely large and complex programming language with many features that interact in unexpected ways. One does not need to know even half of the language to use it well.
- Lectures and Assignments
- CSCI 235 Software Design and Analysis II CUNY Hunter College

- Introduces algorithms for a few common problems such as sorting. Practically speaking, it furthers the students' programming skills with topics such as recursion, pointers, and exception handling, and provides a chance to improve software engineering skills and to give the students practical experience for more productive programming.
- Lectures and Assignments
- CSCI 335 Software Design and Analysis III
CUNY Hunter College- This includes the introduction of hashes, heaps, various forms of trees, and graphs. It also revisits recursion and the sorting problem from a higher perspective than was presented in the prequels. On top of this, it is intended to introduce methods of algorithmic analysis.
- Lectures and Assignments
- CSE 331 Software Design and Implementation University of Washington

- Explores concepts and techniques for design and construction of reliable and maintainable software systems in modern high-level languages; program structure and design; program-correctness approaches, including testing.
- Lectures, Assignments, and Exams
- CSE 373 Analysis of Algorithms Stony Brook University

- Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal book has been touted by many to be best for getting that job in Google. In addition, he's also well-known for tutoring students in competitive programming competitions. If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course.
- Lecture Videos
- ECS 122A Algorithm Design and Analysis UC Davis

- Taught by Dan Gusfield in 2010, this course is an undergraduate introduction to algorithm design and analysis. It features traditional topics, such as Big Oh notation, as well as an importance on implementing specific algorithms. Also featured are sorting (in linear time), graph algorithms, depth-first search, string matching, dynamic programming, NP-completeness, approximation, and randomization.
- Syllabus
- Lecture Videos
- Assignments
- ECS 222A Graduate Level Algorithm Design and Analysis UC Davis

- This is the graduate level complement to the ECS 122A undergraduate algorithms course by Dan Gusfield in 2011. It assumes an undergrad course has already been taken in algorithms, and, while going over some undergraduate algorithms topics, focuses more on increasingly complex and advanced algorithms.
- Lecture Videos
- Syllabus
- Assignments
- 6.INT Hacking a Google Interview MIT

- This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interview questions for software engineer interviews at highly selective companies like Apple, Google, and Facebook. They cover time complexity, hash tables, binary search trees, and other common algorithm topics you should have already covered in a different course, but goes more in depth on things you wouldn't otherwise learn in class- like bitwise logic and problem solving tricks.
- Handouts
- Topics Covered
- 6.006 Introduction to Algorithms MIT


- This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
- Lecture Videos
- Assignments
- Readings
- Resources
- Old Exams
- 6.046J/18.410J Design and Analysis of Algorithms MIT


- This is an intermediate algorithms course with an emphasis on teaching techniques for the design and analysis of efficient algorithms, emphasizing methods of application. Topics include divide-and-conquer, randomization, dynamic programming, greedy algorithms, incremental improvement, complexity, and cryptography. This course assumes that students know how to analyze simple algorithms and data structures from having taken 6.006. It introduces students to the design of computer algorithms, as well as analysis of sophisticated algorithms.
- Lecture Videos
- Lecture Notes
- Assignments
- Resources
- Old Exams
- 6.851 Advanced Data Structures MIT

- This is an advanced DS course, you must be done with the Advanced Algorithms course before attempting this one.
- Lectures Contains videos from sp2012 version, but there isn't much difference.
- Assignments contains the calendar as well.
- 6.854/18.415J Advanced Algorithms MIT

- Advanced course in algorithms by Dr. David Karger covering topics such as amortization, randomization, fingerprinting, word-level parallelism, bit scaling, dynamic programming, network flow, linear programming, fixed-parameter algorithms, and approximation algorithms.
- Register on NB to access the problem set and lectures.
- 6.854J/18.415J Advanced Algorithms MIT


- This course is a first-year graduate course in algorithms. Emphasis is placed on fundamental algorithms and advanced methods of algorithmic design, analysis, and implementation. Techniques to be covered include amortization, randomization, fingerprinting, word-level parallelism, bit scaling, dynamic programming, network flow, linear programming, fixed-parameter algorithms, and approximation algorithms. Domains include string algorithms, network optimization, parallel algorithms, computational geometry, online algorithms, external memory, cache, and streaming algorithms, and data structures. The need for efficient algorithms arises in nearly every area of computer science. But the type of problem to be solved, the notion of what algorithms are "efficient,'' and even the model of computation can vary widely from area to area. In this second class in algorithms, we will survey many of the techniques that apply broadly in the design of efficient algorithms, and study their application in a wide range of application domains and computational models. The goal is for the class to be broad rather than deep. Our plan is to touch upon the following areas. This is a tentative list of topics that might be covered in the class; we will select material adaptively based on the background, interests, and rate of progress of the students.
- Lecture Videos - Spring 2016
- Lecture Notes
- Assignments
- Readings
- Resources
- 15-451/651 Algorithms Carnegie Mellon University

- The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms curriculums on this page. Taught by Avrim Blum and Manuel Blum who has a Turing Award due to his contributions to algorithms. Course link includes a very comprehensive set of reference notes by Avrim Blum.
- 16s-4102 Algorithms University of Virginia
CS Theory
- CIS 500 Software Foundations University of Pennsylvania

- An introduction to formal verification of software using the Coq proof assistant. Topics include basic concepts of logic, computer-assisted theorem proving, functional programming, operational semantics, Hoare logic, and static type systems.
- Lectures and Assignments
- Textbook
- CS 103 Mathematical Foundations of Computing Stanford University

- CS103 is a first course in discrete math, computability theory, and complexity theory. In this course, we'll probe the limits of computer power, explore why some problems are harder to solve than others, and see how to reason with mathematical certainty.
- Links to all lectures notes and assignments are directly on the course page
- CS 173 Discrete Structures Univ of Illinois Urbana-Champaign

- This course is an introduction to the theoretical side of computer science. In it, you will learn how to construct proofs, read and write literate formal mathematics, get a quick introduction to key theory topics and become familiar with a range of standard mathematics concepts commonly used in computer science.
- Textbook Written by the professor. Includes Instructor's Guide.
- Assignments
- Exams
- CS 276 Foundations of Cryptography UC Berkeley

- This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphic Encryption, Indistinguishability Obfuscation, MPC and so on.
- CS 278 Complexity Theory UC Berkeley

- A graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on.
- CS 374 Algorithms & Models of Computation (Fall 2014) University of Illinois Urbana-Champaign

- CS 498 section 374 (unofficially "CS 374") covers fundamental tools and techniques from theoretical computer science, including design and analysis of algorithms, formal languages and automata, computability, and complexity. Specific topics include regular and context-free languages, finite-state automata, recursive algorithms (including divide and conquer, backtracking, dynamic programming, and greedy algorithms), fundamental graph algorithms (including depth- and breadth-first search, topological sorting, minimum spanning trees, and shortest paths), undecidability, and NP-completeness. The course also has a strong focus on clear technical communication.
- Assignments/Exams
- Lecture Notes/Labs
- Lecture videos
- CS 3110 Data Structures and Functional Programming Cornell University


- CS 3110 (formerly CS 312) is the third programming course in the Computer Science curriculum, following CS 1110/1112 and CS 2110. The goal of the course is to help students become excellent programmers and software designers who can design and implement software that is elegant, efficient, and correct, and whose code can be maintained and reused.
- Syllabus
- Lectures
- Assignments
- CS 3220 Introduction to Scientific Computing Cornell University


- In this one-semester survey course, we introduce numerical methods for solving linear and nonlinear equations, interpolating data, computing integrals, and solving differential equations, and we describe how to use these tools wisely (we hope!) when solving scientific problems.
- Syllabus
- Lectures
- Assignments
- CS 4300 Information Retrieval Cornell University


- Studies the methods used to search for and discover information in large-scale systems. The emphasis is on information retrieval applied to textual materials, but there is some discussion of other formats.The course includes techniques for searching, browsing, and filtering information and the use of classification systems and thesauruses. The techniques are illustrated with examples from web searching and digital libraries.
- Syllabus
- Lectures
- Assignments
- CS 4810 Introduction to Theory of Computing Cornell University

- This undergraduate course provides a broad introduction to the mathematical foundations of computer science. We will examine basic computational models, especially Turing machines. The goal is to understand what problems can or cannot be solved in these models.
- Syllabus
- Lectures
- Assignments
- CS 6810 Theory of Computing Cornell University

- This graduate course gives a broad introduction to complexity theory, including classical results and recent developments. Complexity theory aims to understand the power of efficient computation (when computational resources like time and space are limited). Many compelling conceptual questions arise in this context. Most of these questions are (surprisingly?) difficult and far from being resolved. Nevertheless, a lot of progress has been made toward understanding them (and also why they are difficult). We will learn about these advances in this course. A theme will be combinatorial constructions with random-like properties, e.g., expander graphs and error-correcting codes. Some examples:
- Is finding a solution inherently more difficult than verifying it?
- Do more computational resources mean more computing power?
- Is it easier to find approximate solutions than exact ones?
- Are randomized algorithms more powerful than deterministic ones?
- Is it easier to solve problems in the average case than in the worst case?
- Are quantum computers more powerful than classical ones?
- Syllabus
- Lectures
- Assignments
- This graduate course gives a broad introduction to complexity theory, including classical results and recent developments. Complexity theory aims to understand the power of efficient computation (when computational resources like time and space are limited). Many compelling conceptual questions arise in this context. Most of these questions are (surprisingly?) difficult and far from being resolved. Nevertheless, a lot of progress has been made toward understanding them (and also why they are difficult). We will learn about these advances in this course. A theme will be combinatorial constructions with random-like properties, e.g., expander graphs and error-correcting codes. Some examples:
- CSCE 3193 Programming Paradigms University of Arkansas (Fayetteville)

- Programming in different paradigms with emphasis on object oriented programming, network programming and functional programming. Survey of programming languages, event driven programming, concurrency, software validation.
- Syllabus
- Notes
- Assignments
- Practice Exams
- 6.045 Great Ideas in Theoretical Computer Science MIT

- This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.
- Syllabus
- Lecture Notes
- Lecture Videos
Introduction to CS
- CS 10 The Beauty and Joy of Computing UC Berkeley

- CS10 is UCB's introductory computer science class, taught using the beginners' drag-and-drop language. Students learn about history, social implications, great principles, and future of computing. They also learn the joy of programming a computer using a friendly, graphical language, and will complete a substantial team programming project related to their interests.
- Snap! (based on Scratch by MIT).
- Curriculum
- CS 50 Introduction to Computer Science Harvard University

- CS50x is Harvard College's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan.
- Lectures
- Problem Sets
- The course can also be taken from edX.
- The course's OpenCourseware resides here
- CS 61A Structure and Interpretation of Computer Programs [Python] UC Berkeley

- In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.
- Lecture Resources by Type
- Lecture Resources by Topic
- Additional Resources
- Practice Problems
- Extra Lectures
- CS 61AS Structure & Interpretation of Computer Programs [Racket] UC Berkeley

- A self-paced version of the CS61 Course but in Racket / Scheme. 61AS is a great introductory course that will ease you into all the amazing concepts that future CS courses will cover, so remember to keep an open mind, have fun, and always respect the data abstraction
- Lecture Videos
- Assignments and Notes
- CS 101 Computer Science 101 Stanford University

- CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Participants play and experiment with short bits of "computer code" to bring to life to the power and limitations of computers.
- Lectures videos will available for free after registration.
- CS 106A Programming Methodology Stanford University

- This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles.
- Lecture Videos
- Assignments
- All materials in a zip file
- CS 106B Programming Abstractions Stanford University

- This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.
- Lectures
- Assignments
- All materials in a zip file
- CS 107 Programming Paradigms Stanford University

- Topics: Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++)
- Lectures
- Assignments
- CS 109 Programming Practice Using Scala KAIST

- This course introduces basic concepts of programming and computer science, such as dynamic and static typing, dynamic memory allocation, objects and methods, binary representation of numbers, using an editor and compiler from the command line, running programs with arguments from the command line, using libraries, and the use of basic data structures such as arrays, lists, sets, and maps. We will use Scala for this course.
- [Lectures] (http://otfried.org/courses/cs109/index.html)
- [Assignments] (http://otfried.org/courses/cs109/index.html)
- CS 1109 Fundamental Programming Concepts Cornell University

- This course provides an introduction to programming and problem solving using a high-level programming language. It is designed to increase your knowledge level to comfortably continue to courses CS111x. Our focus will be on generic programming concepts: variables, expressions, control structures, loops, arrays, functions, pseudocode and algorithms. You will learn how to analyze problems and convert your ideas into solutions interpretable by computers. We will use MATLAB; because it provides a productive environment, and it is widely used by all engineering communities.
- Syllabus
- Lectures
- Assignments
- CS 1110 Introduction to Computing Using Python Cornell University


- Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.
- Syllabus
- Lectures
- Assignments
- CS 1112 Introduction to Computing Using Matlab Cornell University


- Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
- Syllabus
- Lectures
- Assignments
- Projects
- CS 1115 Introduction to Computational Science and Engineering Using Matlab Graphical User Interfaces Cornell University


- Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
- Syllabus
- Lectures
- Projects
- CS 1130 Transition to OO Programming Cornell University


- Introduction to object-oriented concepts using Java. Assumes programming knowledge in a language like MATLAB, C, C++, or Fortran. Students who have learned Java but were not exposed heavily to OO programming are welcome.
- Syllabus
- Lectures
- Assignments
- CS 1133 Transition to Python Cornell University


- Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Assumes programming knowledge in a language like Java, Matlab, C, C++, or Fortran.
- Syllabus
- Lectures
- Assignments
- CS 1410-2 and CS2420-20 Computer Science I and II for Hackers University of Utah

- An intro course in the spirit of SICP designed by Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explanations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much...
- Lectures and Assignments 1
- Lectures and Assignments 2
- Textbook
- Racket Language
- CS 2110 Object-Oriented Programming and Data Structures Cornell University


- CS 2110 is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness, complexity analysis, recursion, commonly used data structures, graph algorithms, and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures.
- Syllabus
- Lectures
- Assignments
- CS 4302 Web Information Systems Cornell University


- This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
- Syllabus
- Lectures
- Assignments
- CSCE 2004 Programming Foundations I University of Arkansas (Fayetteville)


- Introductory course for students majoring in computer science or computer engineering. Software development process: problem specification, program design, implementation, testing and documentation. Programming topics: data representation, conditional and iterative statements, functions, arrays, strings, file I/O, and classes. Using C++ in a UNIX environment.
- Syllabus
- Notes
- Assignments
- Practice Exams
- CSCI E-1 Understanding Computers and the Internet Harvard University Extension College


- This course is all about understanding: understanding what's going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by being turned on. Designed for students who use computers and the Internet every day but don't fully understand how it all works, this course fills in the gaps. Through lectures on hardware, software, the Internet, multimedia, security, privacy, website development, programming, and more, this course "takes the hood off" of computers and the Internet so that students understand how it all works and why. Through discussions of current events, students are exposed also to the latest technologies.
- Lecture Videos
- Syllabus
- Notes / Recaps
- Assignments
- CS-for-all CS for All Harvey Mudd College

- This book (and course) takes a unique approach to “Intro CS.” In a nutshell, our objective is to provide an introduction to computer science as an intellectually rich and vibrant field rather than focusing exclusively on computer programming. While programming is certainly an important and pervasive element of our approach, we emphasize concepts and problem-solving over syntax and programming language features.
- Lectures and Other resources
- 6.001 Structure and Interpretation of Computer Programs MIT

- Teaches big-picture computing concepts using the Scheme programming language. Students will implement programs in a variety of different programming paradigms (functional, object-oriented, logical). Heavy emphasis on function composition, code-as-data, control abstraction with continuations, and syntactic abstraction through macros. An excellent course if you are looking to build a mental framework on which to hang your programming knowledge.
- Lectures
- Textbook (epub, pdf)
- IDE
- 6.005 Software Construction, Fall 2016 MIT

- This course introduces fundamental principles and techniques of software development. Students learn how to write software that is safe from bugs, easy to understand, and ready for change. Topics include specifications and invariants; testing, test-case generation, and coverage; state machines; abstract data types and representation independence; design patterns for object-oriented programming; concurrent programming, including message passing and shared concurrency, and defending against races and deadlock; and functional programming with immutable data and higher-order functions.
- Lectures Notes/Assignments
Machine Learning
- DEEPNLP Deep Learning for Natural Language Processing University of Oxford

- This is an applied course focussing on recent advances in analysing and generating speech and text using recurrent neural networks. We introduce the mathematical definitions of the relevant machine learning models and derive their associated optimisation algorithms. The course covers a range of applications of neural networks in NLP including analysing latent dimensions in text, transcribing speech to text, translating between languages, and answering questions. This course is organised by Phil Blunsom and delivered in partnership with the DeepMind Natural Language Research Group.
- Lectures
- Assignments are available on the organisation page titled as "practicals"
- CS20si Tensorflow for Deep Learning Research Stanford University

- This course will cover the fundamentals and contemporary usage of the Tensorflow library for deep learning research. We aim to help students understand the graphical computational model of Tensorflow, explore the functions it has to offer, and learn how to build and structure models best suited for a deep learning project. Through the course, students will use Tensorflow to build models of different complexity, from simple linear/logistic regression to convolutional neural network and recurrent neural networks with LSTM to solve tasks such as word embeddings, translation, optical character recognition. Students will also learn best practices to structure a model and manage research experiments.
- Assignments available on Github.
- COMS 4771 Machine Learning Columbia University

- Course taught by Tony Jebara introduces topics in Machine Learning for both generative and discriminative estimation. Material will include least squares methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines, and kernel methods.
- Lectures and Assignments
- CS 109 Data Science Harvard University

- Learning from data in order to gain useful predictions and insights. This course introduces methods for five key facets of an investigation: data wrangling, cleaning, and sampling to get a suitable data set; data management to be able to access big data quickly and reliably; exploratory data analysis to generate hypotheses and intuition; prediction based on statistical methods such as regression and classification; and communication of results through visualization, stories, and interpretable summaries.
- Lectures
- Slides
- Labs and Assignments
- 2014 Lectures
- 2013 Lectures (slightly better)
- CS 156 Learning from Data Caltech


- This is an introductory course in machine learning (ML) that covers the basic theory, algorithms, and applications. ML is a key technology in Big Data, and in many financial, medical, commercial, and scientific applications. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. ML has become one of the hottest fields of study today, taken up by undergraduate and graduate students from 15 different majors at Caltech. This course balances theory and practice, and covers the mathematical as well as the heuristic aspects.
- Lectures
- Homework
- Textbook
- CS 189 Introduction To Machine Learning UC Berkeley
- CS 224d Deep Learning for Natural Language Processing Stanford University

- Natural language processing (NLP) is one of the most important technologies of the information age. Understanding complex language utterances is also a crucial part of artificial intelligence. Applications of NLP are everywhere because people communicate most everything in language: web search, advertisement, emails, customer service, language translation, radiology reports, etc. There are a large variety of underlying tasks and machine learning models powering NLP applications. Recently, deep learning approaches have obtained very high performance across many different NLP tasks. These models can often be trained with a single end-to-end model and do not require traditional, task-specific feature engineering. In this spring quarter course students will learn to implement, train, debug, visualize and invent their own neural network models. The course provides a deep excursion into cutting-edge research in deep learning applied to NLP.
- Syllabus
- Lectures and Assignments
- CS 229r Algorithms for Big Data Harvard University

- Big data is data so large that it does not fit in the main memory of a single machine, and the need to process big data by efficient algorithms arises in Internet search, network traffic monitoring, machine learning, scientific computing, signal processing, and several other areas. This course will cover mathematically rigorous models for developing such algorithms, as well as some provable limitations of algorithms operating in those models.
- Lectures (Youtube)
- Assignments
- CS 231n Convolutional Neural Networks for Visual Recognition Stanford University

- Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision.
- Lecture Notes
- Lecture Videos
- Github Page
- CS 287 Advanced Robotics UC Berkeley

- The course introduces the math and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on probabilistic reasoning and optimization---two areas with wide applicability in modern Artificial Intelligence. An intended side-effect of the course is to generally strengthen your expertise in these two areas.
- Lectures Notes
- Assignments
- CS 395T Statistical and Discrete Methods for Scientific Computing University of Texas

- Practical course in applying modern statistical techniques to real data, particularly bioinformatic data and large data sets. The emphasis is on efficient computation and concise coding, mostly in MATLAB and C++. Topics covered include probability theory and Bayesian inference; univariate distributions; Central Limit Theorem; generation of random deviates; tail (p-value) tests; multiple hypothesis correction; empirical distributions; model fitting; error estimation; contingency tables; multivariate normal distributions; phylogenetic clustering; Gaussian mixture models; EM methods; maximum likelihood estimation; Markov Chain Monte Carlo; principal component analysis; dynamic programming; hidden Markov models; performance measures for classifiers; support vector machines; Wiener filtering; wavelets; multidimensional interpolation; information theory.
- Lectures and Assignments
- CS 4780 Machine Learning Cornell University


- This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
- Syllabus
- Lectures
- CS 4786 Machine Learning for Data Science Cornell University

- An introductory course in machine learning, with a focus on data modeling and related methods and learning algorithms for data sciences. Tentative topic list:
- Dimensionality reduction, such as principal component analysis (PCA) and the singular value decomposition (SVD), canonical correlation analysis (CCA), independent component analysis (ICA), compressed sensing, random projection, the information bottleneck. (We expect to cover some, but probably not all, of these topics).
- Clustering, such as k-means, Gaussian mixture models, the expectation-maximization (EM) algorithm, link-based clustering. (We do not expect to cover hierarchical or spectral clustering.).
- Probabilistic-modeling topics such as graphical models, latent-variable models, inference (e.g., belief propagation), parameter learning.
- Regression will be covered if time permits.
- Assignments
- Lectures
- An introductory course in machine learning, with a focus on data modeling and related methods and learning algorithms for data sciences. Tentative topic list:
- CVX 101 Convex Optimization Stanford University

- The course concentrates on recognizing and solving convex optimization problems that arise in applications. Topics addressed include the following. Convex sets, functions, and optimization problems. Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. Optimality conditions, duality theory, theorems of alternative, and applications. Interior-point methods. Applications to signal processing, statistics and machine learning, control and mechanical engineering, digital and analog circuit design, and finance.
- Textbook
- Lectures and Assignments
- DS-GA 1008 Deep Learning New York University

- This increasingly popular course is taught through the Data Science Center at NYU. Originally introduced by Yann Lecun, it is now led by Zaid Harchaoui, although Prof. Lecun is rumored to still stop by from time to time. It covers the theory, technique, and tricks that are used to achieve very high accuracy for machine learning tasks in computer vision and natural language processing. The assignments are in Lua and hosted on Kaggle.
- Course Page
- Recorded Lectures
- EECS E6893 & EECS E6895 Big Data Analytics & Advanced Big Data Analytics Columbia University

- Students will gain knowledge on analyzing Big Data. It serves as an introductory course for graduate students who are expecting to face Big Data storage, processing, analysis, visualization, and application issues on both workplaces and research environments.
- Taught by Dr. Ching-Yung Lin
- Course Site
- Assignments - Assignments are present in the Course Slides
- EECS E6894 Deep Learning for Computer Vision and Natural Language Processing Columbia University

- This graduate level research class focuses on deep learning techniques for vision and natural language processing problems. It gives an overview of the various deep learning models and techniques, and surveys recent advances in the related fields. This course uses Theano as the main programming tool. GPU programming experiences are preferred although not required. Frequent paper presentations and a heavy programming workload are expected.
- Readings
- Assignments
- Lecture Notes
- EE103 Introduction to Matrix Methods Stanford University

- The course covers the basics of matrices and vectors, solving linear equations, least-squares methods, and many applications. It'll cover the mathematics, but the focus will be on using matrix methods in applications such as tomography, image processing, data fitting, time series prediction, finance, and many others. EE103 is based on a book that Stephen Boyd and Lieven Vandenberghe are currently writing. Students will use a new language called Julia to do computations with matrices and vectors.
- Lectures
- Book
- Assignments
- Code
- Fast.ai Introduction to Machine Learning for Coders Fast.ai / University of San Francisco

- There are around 24 hours of lessons, and you should plan to spend around 8 hours a week for 12 weeks to complete the material. The course is based on lessons recorded at the University of San Francisco for the Masters of Science in Data Science program. We assume that you have at least one year of coding experience, and either remember what you learned in high school math, or are prepared to do some independent study to refresh your knowledge.
- Lecture Videos
- Lecture Notes
- Jupyter Notebooks
- Info 290 Analyzing Big Data with Twitter UC Berkeley school of information

- In this course, UC Berkeley professors and Twitter engineers provide lectures on the most cutting-edge algorithms and software tools for data analytics as applied to Twitter's data. Topics include applied natural language processing algorithms such as sentiment analysis, large scale anomaly detection, real-time search, information diffusion and outbreak detection, trend detection in social streams, recommendation algorithms, and advanced frameworks for distributed computing.
- Lecture Videos
- Previous Years coursepage
- Machine Learning: 2014-2015 University of Oxford

- The course focusses on neural networks and uses the Torch deep learning library (implemented in Lua) for exercises and assignments. Topics include: logistic regression, back-propagation, convolutional neural networks, max-margin learning, siamese networks, recurrent neural networks, LSTMs, hand-writing with recurrent neural networks, variational autoencoders and image generation and reinforcement learning
- Lectures and Assignments
- Source code
- StatLearning Intro to Statistical Learning Stanford University

- This is an introductory-level course in supervised learning, with a focus on regression and classification methods. The syllabus includes: linear and polynomial regression, logistic regression and linear discriminant analysis; cross-validation and the bootstrap, model selection and regularization methods (ridge and lasso); nonlinear models, splines and generalized additive models; tree-based methods, random forests and boosting; support-vector machines.
- The lectures cover all the material in An Introduction to Statistical Learning, with Applications in R which is a more approachable version of the Elements of Statistical Learning (or ESL) book.
- 10-601 Machine Learning Carnegie Mellon University

- This course covers the theory and practical algorithms for machine learning from a variety of perspectives. It covers topics such as Bayesian networks, decision tree learning, Support Vector Machines, statistical learning methods, unsupervised learning and reinforcement learning. The course covers theoretical concepts such as inductive bias, the PAC learning framework, Bayesian learning methods, margin-based learning, and Occam's Razor. Short programming assignments include hands-on experiments with various learning algorithms. This course is designed to give a graduate-level student a thorough grounding in the methodologies, technologies, mathematics and algorithms currently needed by people who do research in machine learning.
- Taught by one of the leading experts on Machine Learning - Tom Mitchell
- Lectures
- Project Ideas and Datasets
- 10-708 Probabilistic Graphical Models Carnegie Mellon University

- Many of the problems in artificial intelligence, statistics, computer systems, computer vision, natural language processing, and computational biology, among many other fields, can be viewed as the search for a coherent global conclusion from local information. The probabilistic graphical models framework provides a unified view for this wide range of problems, enabling efficient inference, decision-making and learning in problems with a very large number of attributes and huge datasets. This graduate-level course will provide you with a strong foundation for both applying graphical models to complex problems and for addressing core research topics in graphical models.
- Lecture Videos
- Assignments
- Lecture notes
- Readings
- 11-785 Deep Learning Carnegie Mellon University

- The course presents the subject through a series of seminars and labs, which will explore it from its early beginnings, and work themselves to some of the state of the art. The seminars will cover the basics of deep learning and the underlying theory, as well as the breadth of application areas to which it has been applied, as well as the latest issues on learning from very large amounts of data. We will concentrate largely, although not entirely, on the connectionist architectures that are most commonly associated with it. Lectures and Reading Notes are available on the page.
- CS246 Mining Massive Data Sets Stanford University

- The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on Map Reduce as a tool for creating parallel algorithms that can process very large amounts of data.
- Lecture Videos
- Assignments
- Lecture notes
- Readings
- CS276 Information Retrieval and Web Search Stanford University

- Basic and advanced techniques for text-based information systems: efficient text indexing; Boolean and vector space retrieval models; evaluation and interface issues; Web search including crawling, link-based algorithms, and Web metadata; text/Web clustering, classification; text mining.
- Lecture notes
- Readings
- Practical_RL Reinforcement Learning in the Wild Yandex SDA

- A course on reinforcement learning in the wild. Taught on-campus in HSE and Yandex SDA (russian) and maintained to be friendly to online students (both english and russian).
- Syllabus
- UvA DEEP LEARNING UvA Deep Learning Course University of Amsterdam

- This course is taught in the MSc program in Artificial Intelligence of the University of Amsterdam. In this course we study the theory of deep learning, namely of modern, multi-layered neural networks trained on big data. The course focuses particularly on computer vision and language modelling, which are perhaps two of the most recognizable and impressive applications of the deep learning theory.
- Lecture Videos & Notes
- Practicals
- Readings
Security
- CIS 4930 / CIS 5930 Offensive Computer Security Florida State University

- Course taught by W. Owen Redwood and Xiuwen Liu. It covers a wide range of computer security topics, starting from Secure C Coding and Reverse Engineering to Penetration Testing, Exploitation and Web Application Hacking, both from the defensive and the offensive point of view.
- Lectures and Videos
- Assignments
- CS 155 Computer and Network Security Stanford

- Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system holes, application security (web, email, databases), viruses, social engineering attacks, privacy, and digital rights management. Course projects focus on building reliable code. Recommended: Basic Unix. Primarily intended for seniors and first-year graduate students.
- CS 161 Computer Security UC Berkeley

- Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.
- CS 259 Security Modeling and Analysis Stanford

- The course will cover a variety of contemporary network protocols and other systems with security properties. The course goal is to give students hands-on experience in using automated tools and related techniques to analyze and evaluate security mechanisms. To understand security properties and requirements, we will look at several network protocols and their properties, including secrecy, authentication, key establishment, and fairness. In parallel, the course will look at several models and tools used in security analysis and examine their advantages and limitations. In addition to fully automated finite-state model checking techniques, we will also study other approaches, such as constraint solving, process algebras, protocol logics, probabilistic model checking, game theory, and executable models based on logic programming.
- CS 261 Internet/Network Security UC Berkeley

- This class aims to provide a thorough grounding in network security suitable for those interested in conducting research in the area, as well as students more generally interested in either security or networking. We will also look at broader issues relating to Internet security for which networking plays a role. Topics include: denial-of-service; capabilities; network intrusion detection; worms; forensics; scanning; traffic analysis / inferring activity; architecture; protocol issues; legality and ethics; web attacks; anonymity; honeypots; botnets; spam; the underground economy; research pitfalls. The course is taught with an emphasis on seminal papers rather than bleeding-edge for a given topic.
- CS 5430 System Security Cornell University
- This course discusses security for computers and networked information systems. We focus on abstractions, principles, and defenses for implementing military as well as commercial-grade secure systems.
- Syllabus
- Lectures
- Assignments
- CSCI 4968 Modern Binary Exploitation Rensselaer Polytechnic Institute


- This repository contains the materials as developed and used by RPISEC to teach Modern Binary Exploitation at Rensselaer Polytechnic Institute in Spring 2015. This was a university course developed and run solely by students to teach skills in vulnerability research, reverse engineering, and binary exploitation.
- Lectures Notes
- Labs
- Projects
- CSCI 4976 Malware Analysis Rensselaer Polytechnic Institute


- This repository contains the materials as developed and used by RPISEC to teach Malware Analysis at Rensselaer Polytechnic Institute in Fall 2015. This was a university course developed and run solely by students, primarily using the
- EECS 588 Computer & Network Security University of Michigan

- Taught by J. Alex Halderman who has analyzed the security of Electronic Voting Machines in the US and over seas.
- This intensive research seminar covers foundational work and current topics in computer systems security.
- Readings Practical Malware Analysis book by Michael Sikorski and Andrew Honig, to teach skills in reverse engineering, malicious behaviour, malware, and anti-analysis techniques.
- Lectures Notes
- Labs
- Projects
- 6.857 Computer and Network Security MIT

- Emphasis on applied cryptography and may include: basic notion of systems security, cryptographic hash functions, symmetric cryptography (one-time pad, stream ciphers, block ciphers), cryptanalysis, secret-sharing, authentication codes, public-key cryptography (encryption, digital signatures), public-key attacks, web browser security, biometrics, electronic cash, viruses, electronic voting, Assignments include a group final project. Topics may vary year to year. Lecture Notes References
- 6.858 Computer Systems Security MIT
- Design and implementation of secure computer systems. Lectures cover threat models, attacks that compromise security, and techniques for achieving security, based on recent research papers. Topics include operating system (OS) security, capabilities, information flow control, language security, network protocols, hardware security, and security in web applications.
- Taught by James Mickens and Nickolai Zeldovich
- Video Lectures and Labs
- Quizzes
- Readings
- Final Projects
- 18-636 Browser Security Stanford

- The Web continues to grow in popularity as platform for retail transactions, financial services, and rapidly evolving forms of communication. It is becoming an increasingly attractive target for attackers who wish to compromise users' systems or steal data from other sites. Browser vendors must stay ahead of these attacks by providing features that support secure web applications. This course will study vulnerabilities in existing web browsers and the applications they render, as well as new technologies that enable web applications that were never before possible. The material will be largely based on current research problems, and students will be expected to criticize and improve existing defenses. Topics of study include (but are not limited to) browser encryption, JavaScript security, plug-in security, sandboxing, web mashups, and authentication.
Artificial Intelligence
- CS 188 Introduction to Artificial Intelligence UC Berkeley

- This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm. By the end of this course, you will have built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings. Your agents will draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in this course apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.
- Lectures
- Projects
- Exams
- CS 4700 Foundations of Artificial Intelligence Cornell University

- This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
- Assignments
- Lectures
- CS 6700 Advanced Artificial Intelligence Cornell University
- 6.868J The Society of Mind MIT

- This course is an introduction, by Prof. Marvin Minsky, to the theory that tries to explain how minds are made from collections of simpler processes. It treats such aspects of thinking as vision, language, learning, reasoning, memory, consciousness, ideals, emotions, and personality. It incorporates ideas from psychology, artificial intelligence, and computer science to resolve theoretical issues such as wholes vs. parts, structural vs. functional descriptions, declarative vs. procedural representations, symbolic vs. connectionist models, and logical vs. common-sense theories of learning.
- Lectures
- Assignments
- Readings
Computer Graphics
- CAP 5415 Computer Vision University of Central Florida

- An introductory level course covering the basic topics of computer vision, and introducing some fundamental approaches for computer vision research.
- Lectures and Videos
- Assignments
- CIS 581 Computer Vision and Computational Photography University of Pennsylvania

- An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search.
- Lectures
- Assignments
- CMU 462 Computer Graphics Carnegie Mellon University

- This course provides a comprehensive introduction to computer graphics. Focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis.
- Lectures and Readings
- Assignments and Quizes
- CS 378 3D Reconstruction with Computer Vision UTexas

- In this lab-based class, we'll dive into practical applications of 3D reconstruction, combining hardware and software to build our own 3D environments from scratch. We'll use open-source frameworks like OpenCV to do the heavy lifting, with the focus on understanding and applying state-of-the art approaches to geometric computer vision
- Lectures
- CS 4620 Introduction to Computer Graphics Cornell University

- The study of creating, manipulating, and using visual images in the computer.
- Assignments
- Exams
- CS 4670 Introduction to Computer Vision Cornell University

- This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
- Assignments
- Lectures
- CS 6670 Computer Vision Cornell University

- Introduction to computer vision. Topics include edge detection, image segmentation, stereopsis, motion and optical flow, image mosaics, 3D shape reconstruction, and object recognition. Students are required to implement several of the algorithms covered in the course and complete a final project.
- Syllabus
- Lectures
- Assignments
- CSCI 1230 Introduction to Computer Graphics Brown University

- This course offers an in-depth exploration of fundamental concepts in 2D and 3D computer graphics. It introduces 2D raster graphics techniques, including scan conversion, simple image processing, interaction techniques and user interface design. The bulk of the course is devoted to 3D modeling, geometric transformations, and 3D viewing and rendering.
- Lectures
- Labs
- Demos
- CSCI-GA.2270-001 Graduate Computer Graphics New York University

- Step-by-step study computer graphics, with reading and homework at each lecture (Fall2015)
- Lectures
Misc
- AM 207 Monte Carlo Methods and Stochastic Optimization Harvard University

- This course introduces important principles of Monte Carlo techniques and demonstrates the power of these techniques with simple (but very useful) applications. All of this in Python!
- Lecture Videos
- Assignments
- Lecture Notes
- CS 75 Introduction to Game Development Tufts University

- The course taught by Ming Y. Chow teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game physics, sprites, animation, game development methodology, sound, testing, MMORPGs and online games, and addressing mobile development in Android, HTML5, and iOS. Most to all of the development is focused on PyGame for learning principles
- Text Lectures
- Assignments
- Labs
- CS 50 Intro to Game Developement Harvard University


- This course picks up where Harvard College’s CS50 leaves off, focusing on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and LÖVE 2D, as well as languages like Lua and C#. By class’s end, students will have programmed several of their own games and gained a thorough understanding of the basics of game design and development.
- Assignments
- Lecture Videos
- CS 100 Open Source Software Construction UC Riverside

- This is a course on how to be a hacker. Your first four homework assignments walk you through the process of building your own unix shell. You'll be developing it as an open source project, and you will collaborate with each other at various points.
- Github Page
- Assignments
- CS 108 Object Oriented System Design Stanford

- Software design and construction in the context of large OOP libraries. Taught in Java. Topics: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies, approaches to programming in teams.
- CS 168 Computer Networks UC Berkeley

- This is an undergraduate level course covering the fundamental concepts of networking as embodied in the Internet. The course will cover a wide range of topics; see the lecture schedule for more details. While the class has a textbook, we will not follow its order of presentation but will instead use the text as a reference when covering each individual topic. The course will also have several projects that involve programming (in Python).
- You should know programming, data structures, and software engineering. In terms of mathematics, your algebra should be very solid, you need to know basic probability, and you should be comfortable with thinking abstractly. The TAs will spend very little time reviewing material that is not specific to networking. We assume that you either know the material covered in those courses, or are willing to learn the material as necessary. We won't cover any of this material in lecture.
- CS 193a Android App Development, Spring 2016 Stanford University


- Course Description: This course provides an introduction to developing applications for the Android mobile platform.
- Prerequisite: CS 106B or equivalent. Java experience highly recommended. OOP highly recommmended.
- Devices: Access to an Android phone and/or tablet recommended but not required.
- Videos: Videos list can be found here
- Other materials: Some codes, handsout, homework ..... and lecture notes are not downloadable on the site due to login requirement. Please head to my Github repo here to download them.
- CS 193p Developing Applications for iOS Stanford University


- Updated for iOS 7. Tools and APIs required to build applications for the iPhone and iPad platform using the iOS SDK. User interface designs for mobile devices and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management, Objective-C programming language. Other topics include: object-oriented database API, animation, multi-threading and performance considerations.
- Prerequisites: C language and object-oriented programming experience
- Recommended: Programming Abstractions
- Updated courses for iOS8 - Swift
- Updated courses for iOS9 - Swift
- CS 223A Introduction to Robotics Stanford University

- The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.
- CS 262a Advanced Topics in Computer Systems UC Berkeley

- CS262a is the first semester of a year-long sequence on computer systems research, including operating systems, database systems, and Internet infrastructure systems. The goal of the course is to cover a broad array of research topics in computer systems, and to engage you in top-flight systems research. The first semester is devoted to basic thematic issues and underlying techniques in computer systems, while the second semester goes deeper into topics related to scalable, parallel and distributed systems. The class is based on a discussion of important research papers and a research project.
- Parts: Some Classics, Persistent Storage, Concurrency, Higher-Level Models, Virtual Machines, Cloud Computing, Parallel and Distributed Computing, Potpourri.
- Prerequisites: The historical prerequisite was to pass an entrance exam in class, which covered undergraduate operating systems material (similar to UCB's CS162). There is no longer an exam. However, if you have not already taken a decent undergrad OS class, you should talk with me before taking this class. The exam had the benefit of "paging in" the undergrad material, which may have been its primary value (since the pass rate was high).
- Readings & Lectures
- CS 294 Cutting-edge Web Technologies Berkeley

- Want to learn what makes future web technologies tick? Join us for the class where we will dive into the internals of many of the newest web technologies, analyze and dissect them. We will conduct survey lectures to provide the background and overview of the area as well as invite guest lecturers from various leading projects to present their technologies.
- CS 411 Software Architecture Design Bilkent University

- This course teaches the basic concepts, methods and techniques for designing software architectures. The topics include: rationale for software architecture design, modeling software architecture design, architectural styles/patterns, architectural requirements analysis, comparison and evaluation of architecture design methods, synthesis-based software architecture design, software product-line architectures, domain modeling, domain engineering and application engineering, software architecture implementation, evaluating software architecture designs.
- CS 3152 Introduction to Computer Game Development Cornell University


- A project-based course in which programmers and designers collaborate to make a computer game. This course investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. Aesthetic and cultural include art and modeling, sound and music, game balance, and player experience.
- Syllabus
- Lectures
- Assignments
- CS 4152 Advanced Topics in Computer Game Development Cornell University


- Project-based follow-up course to CS/INFO 3152. Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices. There is a special emphasis on developing games that can be submitted to festivals and competitions, or that can be commercialized.
- Syllabus
- Lectures
- Assignments
- CS 4154 Analytics-driven Game Design Cornell University


- A project-based course in which programmers and designers collaborate to design, implement, and release a video game online through popular game portals. In this course, students will use the internet to gather data anonymously from players. Students will analyze this data in order to improve their game over multiple iterations. Technical aspects of this course include programming, database architecture, and statistical analysis.
- Syllabus
- Lectures
- Assignments
- CS 4812 Quantum Information Processing Cornell University

- Hardware that exploits quantum phenomena can dramatically alter the nature of computation. Though constructing a working quantum computer is a formidable technological challenge, there has been much recent experimental progress. In addition, the theory of quantum computation is of interest in itself, offering strikingly different perspectives on the nature of computation and information, as well as providing novel insights into the conceptual puzzles posed by the quantum theory. The course is intended both for physicists, unfamiliar with computational complexity theory or cryptography, and also for computer scientists and mathematicians, unfamiliar with quantum mechanics. The prerequisites are familiarity (and comfort) with finite dimensional vector spaces over the complex numbers, some standard group theory, and ability to count in binary.
- Syllabus
- Lectures
- CS 4860 Applied Logic Cornell University

- In addition to basic first-order logic, when taught by Computer Science this course involves elements of Formal Methods and Automated Reasoning. Formal Methods is concerned with proving properties of algorithms, specifying programming tasks and synthesizing programs from proofs. We will use formal methods tools such as interactive proof assistants (see www.nuprl.org). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants.
- Syllabus
- Lectures
- Assignments
- CS 5150 Software Engineering Cornell University

- Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems
- Lectures
- Assignments
- CS 5220 Applications of Parallel Computers Cornell University

- How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
- Single-processor architecture, caches, and serial performance tuning
- Basics of parallel machine organization
- Distributed memory programming with MPI
- Shared memory programming with OpenMP
- Parallel patterns: data partitioning, synchronization, and load balancing
- Examples of parallel numerical algorithms
- Applications from science and engineering
- Lectures
- Assignments
- How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
- CS 5540 Computational Techniques for Analyzing Clinical Data Cornell University


- CS5540 is a masters-level course that covers a wide range of clinical problems and their associated computational challenges. The practice of medicine is filled with digitally accessible information about patients, ranging from EKG readings to MRI images to electronic health records. This poses a huge opportunity for computer tools that make sense out of this data. Computation tools can be used to answer seemingly straightforward questions about a single patient's test results (“Does this patient have a normal heart rhythm?”), or to address vital questions about large populations (“Is there any clinical condition that affects the risks of Alzheimer”). In CS5540 we will look at many of the most important sources of clinical data and discuss the basic computational techniques used for their analysis, ranging in sophistication from current clinical practice to state-of-the-art research projects.
- Syllabus
- Lectures
- Assignments
- CS 5724 Evolutionary Computation Cornell University

- This course will cover advanced topics in evolutionary algorithms and their application to open-ended computational design. The field of evolutionary computation tries to address large-scale optimization and planning problems through stochastic population-based methods. It draws inspiration from evolutionary processes in nature and in engineering, and also serves as abstract models for these phenomena. Evolutionary processes are generally weak methods that require little information about the problem domain and hence can be applied across a wide variety of applications. They are especially useful for open-ended problem domains for which little formal knowledge exists and the number of parameters is undefined, such as for the general engineering design process. This course will provide insight to a variety of evolutionary computation paradigms, such as genetic algorithms, genetic programming, and evolutionary strategies, as well as governing dynamics of co-evolution, arms races and mediocre stable states. New methods involving symbiosis models and pattern recognition will also be presented. The material will be intertwined with discussions of representations and results for design problems in a variety of problem domains including software, electronics, and mechanics.
- Syllabus
- Lectures
- Assignments
- CS 6452 Datacenter Networks and Services Cornell University

- CS6452 focuses on datacenter networks and services. The emerging demand for web services and cloud computing have created need for large scale data centers. The hardware and software infrastructure for datacenters critically determines the functionality, performance, cost and failure tolerance of applications running on that datacenter. This course will examine design alternatives for both the hardware (networking) infrastructure, and the software infrastructure for datacenters.
- Syllabus
- Lectures
- CS 6630 Realistic Image Synthesis Cornell University

- CS6630 is an introduction to physics-based rendering at the graduate level. Starting from the fundamentals of light transport we will look at formulations of the Rendering Equation, and a series of Monte Carlo methods, from sequential sampling to multiple importance sampling to Markov Chains, for solving the equation to make pictures. We'll look at light reflection from surfaces and scattering in volumes, illumination from luminaries and environments, and diffusion models for translucent materials. We will build working implementations of many of the algorithms we study, and learn how to make sure they are actually working correctly. It's fun to watch integrals and probability distributions transform into photographs of a slightly too perfect synthetic world.
- Syllabus
- Lectures
- Assignments
- Readings
- CS 6640 Computational Photography Cornell University

- A course on the emerging applications of computation in photography. Likely topics include digital photography, unconventional cameras and optics, light field cameras, image processing for photography, techniques for combining multiple images, advanced image editing algorithms, and projector-camera systems.cornell.edu/courses/CS6630/2012sp/about.stm)
- Lectures
- Assignments
- CS 6650 Computational Motion Cornell University

- Covers computational aspects of motion, broadly construed. Topics include the computer representation, modeling, analysis, and simulation of motion, and its relationship to various areas, including computational geometry, mesh generation, physical simulation, computer animation, robotics, biology, computer vision, acoustics, and spatio-temporal databases. Students implement several of the algorithms covered in the course and complete a final project. This offering will also explore the special role of motion processing in physically based sound rendering.
- CS 6840 Algorithmic Game Theory Cornell University

- Algorithmic Game Theory combines algorithmic thinking with game-theoretic, or, more generally, economic concepts. The course will study a range of topics at this interface
- Syllabus
- Lectures
- Assignments
- Readings
- CSE 154 Web Programming University of Washington

- This course is an introduction to programming for the World Wide Web. Covers use of HTML, CSS, PHP, JavaScript, AJAX, and SQL.
- Lectures
- Assignments
- ESM 296-4F GIS & Spatial Analysis UC Santa Barbara

- Taught by James Frew, Ben Best, and Lisa Wedding
- Focuses on specific computational languages (e.g., Python, R, shell) and tools (e.g., GDAL/OGR, InVEST, MGET, ModelBuilder) applied to the spatial analysis of environmental problems
- GitHub (includes lecture materials and labs)
- ICS 314 Software Engineering University of Hawaii

- Taught by Philip Johnson
- Introduction to software engineering using the "Athletic Software Engineering" pedagogy
- Readings
- Experiences
- Assessments
- IGME 582 Humanitarian Free & Open Source Software Development Rochester Institute of Technology

- This course provides students with exposure to the design, creation and production of Open Source Software projects. Students will be introduced to the historic intersections of technology and intellectual property rights and will become familiar with Open Source development processes, tools and practices.
- I485 / H400 Biologically Inspired Computation Indiana University

- Course taught by Luis Rocha about the multi-disciplinary field algorithms inspired by naturally occurring phenomenon. This course provides introduces the following areas: L-systems, Cellular Automata, Emergence, Genetic Algorithms, Swarm Intelligence and Artificial Immune Systems. It's aim is to cover the fundamentals and enable readers to build up a proficiency in applying various algorithms to real-world problems.
- Lectures
- Assignments
- Open Sourced Elective: Database and Rails Intro to Ruby on Rails University of Texas


- An introductory course in Ruby on Rails open sourced by University of Texas' CS Adjunct Professor, Richard Schneeman.
- Lectures
- Assignments
- Videos
- SCICOMP An Introduction to Efficient Scientific Computation Universität Bremen

- This is a graduate course in scientific computing created and taught by Oliver Serang in 2014, which covers topics in computer science and statistics with applications from biology. The course is designed top-down, starting with a problem and then deriving a variety of solutions from scratch.
- Topics include memoization, recurrence closed forms, string matching (sorting, hash tables, radix tries, and suffix tries), dynamic programming (e.g. Smith-Waterman and Needleman-Wunsch), Bayesian statistics (e.g. the envelope paradox), graphical models (HMMs, Viterbi, junction tree, belief propagation), FFT, and the probabilistic convolution tree.
- Lecture videos on Youtube and for direct download
- 14-740 Fundamentals of Computer Networks CMU

- This is an introductory course on Networking for graduate students. It follows a top-down approach to teaching Computer Networks, so it starts with the Application layer which most of the students are familiar with and as the course unravels we learn more about transport, network and link layers of the protocol stack.
- As far as prerequisites are concerned - basic computer, programming and probability theory background is required.
- The course site contains links to the lecture videos, reading material and assignments.

AWESOME DATA SCIENCE
An open source Data Science repository to learn and apply towards solving real world problems.
This is a shortcut path to start studying Data Science. Just follow the steps to answer the questions, "What is Data Science and what should I study to learn Data Science?"
What is Data Science?
Data Science is one of the hottest topics on the Computer and Internet farmland nowadays. People have gathered data from applications and systems until today and now is the time to analyze them. The next steps are producing suggestions from the data and creating predictions about the future. Here you can find the biggest question for Data Science and hundreds of answers from experts.
| Link | Preview | | --- | --- | | What is Data Science @ O'reilly | Data scientists combine entrepreneurship with patience, the willingness to build data products incrementally, the ability to explore, and the ability to iterate over a solution. They are inherently interdisciplinary. They can tackle all aspects of a problem, from initial data collection and data conditioning to drawing conclusions. They can think outside the box to come up with new ways to view the problem, or to work with very broadly defined problems: “here’s a lot of data, what can you make from it?” | | What is Data Science @ Quora | Data Science is a combination of a number of aspects of Data such as Technology, Algorithm development, and data interference to study the data, analyse it, and find innovative solutions to difficult problems. Basically Data Science is all about Analysing data and driving for business growth by finding creative ways. | | The sexiest job of 21st century | Data scientists today are akin to Wall Street “quants” of the 1980s and 1990s. In those days people with backgrounds in physics and math streamed to investment banks and hedge funds, where they could devise entirely new algorithms and data strategies. Then a variety of universities developed master’s programs in financial engineering, which churned out a second generation of talent that was more accessible to mainstream firms. The pattern was repeated later in the 1990s with search engineers, whose rarefied skills soon came to be taught in computer science programs. | | Wikipedia | Data science is an inter-disciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from many structural and unstructured data. Data science is related to data mining, machine learning and big data. | | How to Become a Data Scientist | Data scientists are big data wranglers, gathering and analyzing large sets of structured and unstructured data. A data scientist’s role combines computer science, statistics, and mathematics. They analyze, process, and model data then interpret the results to create actionable plans for companies and other organizations. | | a very short history of #datascience | The story of how data scientists became sexy is mostly the story of the coupling of the mature discipline of statistics with a very young one--computer science. The term “Data Science” has emerged only recently to specifically designate a new profession that is expected to make sense of the vast stores of big data. But making sense of data has a long history and has been discussed by scientists, statisticians, librarians, computer scientists and others for years. The following timeline traces the evolution of the term “Data Science” and its use, attempts to define it, and related terms. |
Learn Data Science
Our favorite programming language is Python nowadays for #DataScience. Python's - Pandas library has full functionalities for collecting and analyzing data. We use Anaconda to play with data and to create applications.
- Algorithms
- Colleges
- MOOC's
- Podcasts
- Books
- YouTube Videos & Channels
- Toolboxes - Environment
- Journals, Publications and Magazines
- Presentations
- Tutorials
Algorithms
These are some Machine Learning and Data Mining algorithms and models help you to understand your data and derive meaning from it.
Supervised Learning
- Regression
- Linear Regression
- Ordinary Least Squares
- Logistic Regression
- Stepwise Regression
- Multivariate Adaptive Regression Splines
- Locally Estimated Scatterplot Smoothing
- Classification
- k-nearest neighbor
- Support Vector Machines
- Decision Trees
- ID3 algorithm
- C4.5 algorithm
- Ensemble Learning
- Boosting
- Bagging
- Random Forest
- AdaBoost
Unsupervised Learning
- Clustering
- Hierchical clustering
- k-means
- Fuzzy clustering
- Mixture models
- Dimension Reduction
- Principal Component Analysis (PCA)
- t-SNE
- Neural Networks
- Self-organizing map
- Adaptive resonance theory
- Hidden Markov Models (HMM)
Semi-Supervised Learning
- S3VM
- Clustering
- Generative models
- Low-density separation
- Laplacian regularization
- Heuristic approaches
Reinforcement Learning
- Q Learning
- SARSA (State-Action-Reward-State-Action) algorithm
- Temporal difference learning
Data Mining Algorithms
- C4.5
- k-Means
- SVM
- Apriori
- EM
- PageRank
- AdaBoost
- kNN
- Naive Bayes
- CART
Deep Learning architectures
- Multilayer Perceptron
- Convolutional Neural Network (CNN)
- Recurrent Neural Network (RNN)
- Boltzmann Machines
- Autoencoder
- Generative Adversarial Network (GAN)
- Self-Organized Maps
COLLEGES
- A list of colleges and universities offering degrees in data science.
- Data Science Degree @ Berkeley
- Data Science Degree @ UVA
- Data Science Degree @ Wisconsin
- MS in Computer Information Systems @ Boston University
- MS in Business Analytics @ ASU Online
- Data Science Engineer @ BTH
- MS in Applied Data Science @ Syracuse
- M.S. Management & Data Science @ Leuphana
- Master of Data Science @ Melbourne University
- Msc in Data Science @ The University of Edinburgh
- Master of Management Analytics @ Queen's University
- Master of Data Science @ Illinois Institute of Technology
- Master of Applied Data Science @ The University of Michigan
- Master Data Science and Artificial Intelligence @ Eindhoven University of Technology
Intensive Programs
MOOC's
- Coursera Introduction to Data Science
- Data Science - 9 Steps Courses, A Specialization on Coursera
- Data Mining - 5 Steps Courses, A Specialization on Coursera
- Machine Learning – 5 Steps Courses, A Specialization on Coursera
- CS 109 Data Science
- OpenIntro
- CS 171 Visualization
- Process Mining: Data science in Action
- Oxford Deep Learning
- Oxford Deep Learning - video
- Oxford Machine Learning
- UBC Machine Learning - video
- Data Science Specialization
- Coursera Big Data Specialization
- Statistical Thinking for Data Science and Analytics by Edx
- Cognitive Class AI by IBM
- Udacity - Deep Learning
- Keras in Motion
- Microsoft Professional Program for Data Science
- COMP3222/COMP6246 - Machine Learning Technologies
- CS 231 - Convolutional Neural Networks for Visual Recognition
- Coursera Tensorflow in practice
- Coursera Deep Learning Specialization
- 365 Data Science Course
- Coursera Natural Language Processing Specialization
- Coursera GAN Specialization
- Codecademy's Data Science
- Linear Algebra - Linear Algebra course by Gilbert Strang
- A 2020 Vision of Linear Algebra (G. Strang)
- Python for Data Science Foundation Course
- Data Science: Statistics & Machine Learning
- Machine Learning Engineering for Production (MLOps)
- NLP Specialization Coursera
- Recommender Systems Specialization from University of Minnesota is an intermediate/advanced level specialization focused on Recommender System on Coursera Plaform.
Tutorials
- 1000 Data Science Projects you can run on browser with ipyton.
- #tidytuesday A weekly data project aimed at the R ecosystem.
- Data science your way
- PySpark Cheatsheet
- Machine Learning, Data Science and Deep Learning with Python
- How To Label Data
- Your Guide to Latent Dirichlet Allocation
- Over 1000 Data Science Online Courses at Classpert Online Search Engine
- Tutorials of source code from the book Genetic Algorithms with Python by Clinton Sheppard
- Tutorials to get started on signal processings for machine learning
- Realtime deployment Tutorial on Python time-series model deployment.
- Python for Data Science: A Beginner’s Guide
Free Courses
- Data Scientist with R
- Data Scientist with Python
- Genetic Algorithms OCW Course
- AI Expert Roadmap - Roadmap to becoming an Artificial Intelligence Expert
- Convex Optimization - Convex Optimization (basics of convex analysis; least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems; optimality conditions, duality theory...)
Toolboxes - Environment
| Link | Description | | --- | --- | | The Data Science Lifecycle Process | The Data Science Lifecycle Process is a process for taking data science teams from Idea to Value repeatedly and sustainably. The process is documented in this repo | | Data Science Lifecycle Template Repo | Template repository for data science lifecycle project | | RexMex | A general purpose recommender metrics library for fair evaluation. | | ChemicalX | A PyTorch based deep learning library for drug pair scoring. | | PyTorch Geometric Temporal | Representation learning on dynamic graphs. | | Little Ball of Fur | A graph sampling library for NetworkX with a Scikit-Learn like API. | | Karate Club | An unsupervised machine learning extension library for NetworkX with a Scikit-Learn like API. | | ML Workspace | All-in-one web-based IDE for machine learning and data science. The workspace is deployed as a Docker container and is preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch) and dev tools (e.g., Jupyter, VS Code) | | Neptune.ai | Community-friendly platform supporting data scientists in creating and sharing machine learning models. Neptune facilitates teamwork, infrastructure management, models comparison and reproducibility. | | steppy | Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces very simple interface that enables clean machine learning pipeline design. | | steppy-toolkit | Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective. | | Datalab from Google | easily explore, visualize, analyze, and transform data using familiar languages, such as Python and SQL, interactively. | | Hortonworks Sandbox | is a personal, portable Hadoop environment that comes with a dozen interactive Hadoop tutorials. | | R | is a free software environment for statistical computing and graphics. | | RStudio | IDE – powerful user interface for R. It’s free and open source, works on Windows, Mac, and Linux. | | Python - Pandas - Anaconda | Completely free enterprise-ready Python distribution for large-scale data processing, predictive analytics, and scientific computing | | Pandas GUI | Pandas GUI | | Scikit-Learn | Machine Learning in Python | | NumPy | NumPy is fundamental for scientific computing with Python. It supports large, multi-dimensional arrays and matrices and includes an assortment of high-level mathematical functions to operate on these arrays. | | Vaex | Vaex is a Python library that allows you to visualize large datasets and calculate statistics at high speeds. | | SciPy | SciPy works with NumPy arrays and provides efficient routines for numerical integration and optimization. | Data Science Toolbox | Coursera Course | | Data Science Toolbox | Blog | | Wolfram Data Science Platform | Take numerical, textual, image, GIS or other data and give it the Wolfram treatment, carrying out a full spectrum of data science analysis and visualization and automatically generating rich interactive reports—all powered by the revolutionary knowledge-based Wolfram Language. | | Datadog | Solutions, code, and devops for high-scale data science. | | Variance | Build powerful data visualizations for the web without writing JavaScript | | Kite Development Kit | The Kite Software Development Kit (Apache License, Version 2.0) , or Kite for short, is a set of libraries, tools, examples, and documentation focused on making it easier to build systems on top of the Hadoop ecosystem. | | Domino Data Labs | Run, scale, share, and deploy your models — without any infrastructure or setup. | | Apache Flink | A platform for efficient, distributed, general-purpose data processing. | | Apache Hama | Apache Hama is an Apache Top-Level open source project, allowing you to do advanced analytics beyond MapReduce. | | Weka | Weka is a collection of machine learning algorithms for data mining tasks. | | Octave | GNU Octave is a high-level interpreted language, primarily intended for numerical computations.(Free Matlab) | | Apache Spark | Lightning-fast cluster computing | | Hydrosphere Mist | a service for exposing Apache Spark analytics jobs and machine learning models as realtime, batch or reactive web services. | | Data Mechanics | A data science and engineering platform making Apache Spark more developer-friendly and cost-effective. | | Caffe | Deep Learning Framework | | Torch | A SCIENTIFIC COMPUTING FRAMEWORK FOR LUAJIT | | Nervana's python based Deep Learning Framework | . | | Skale | High performance distributed data processing in NodeJS | | Aerosolve | A machine learning package built for humans. | | Intel framework | Intel® Deep Learning Framework | | Datawrapper | An open source data visualization platform helping everyone to create simple, correct and embeddable charts. Also at github.com | | Tensor Flow | TensorFlow is an Open Source Software Library for Machine Intelligence | | Natural Language Toolkit | An introductory yet powerful toolkit for natural language processing and classification | | nlp-toolkit for node.js | . | | Julia | high-level, high-performance dynamic programming language for technical computing | | IJulia | a Julia-language backend combined with the Jupyter interactive environment | | Apache Zeppelin | Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more | | Featuretools | An open source framework for automated feature engineering written in python | | Optimus | Cleansing, pre-processing, feature engineering, exploratory data analysis and easy ML with PySpark backend. | | Albumentations | А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops. | | DVC | An open-source data science version control system. It helps track, organize and make data science projects reproducible. In its very basic scenario it helps version control and share large data and model files. | | Lambdo | is a workflow engine which significantly simplifies data analysis by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation. | | Feast | A feature store for the management, discovery, and access of machine learning features. Feast provides a consistent view of feature data for both model training and model serving. | | Polyaxon | A platform for reproducible and scalable machine learning and deep learning. | | LightTag | Text Annotation Tool for teams | | UBIAI | Easy-to-use text annotation tool for teams with most comprehensive auto-annotation features. Supports NER, relations and document classification as well as OCR annotation for invoice labeling | | Trains | Auto-Magical Experiment Manager, Version Control & DevOps for AI | | Hopsworks | Open-source data-intensive machine learning platform with a feature store. Ingest and manage features for both online (MySQL Cluster) and offline (Apache Hive) access, train and serve models at scale. | | MindsDB | MindsDB is an Explainable AutoML framework for developers. With MindsDB you can build, train and use state of the art ML models in as simple as one line of code. | | Lightwood | A Pytorch based framework that breaks down machine learning problems into smaller blocks that can be glued together seamlessly with an objective to build predictive models with one line of code. | | AWS Data Wrangler | An open-source Python package that extends the power of Pandas library to AWS connecting DataFrames and AWS data related services (Amazon Redshift, AWS Glue, Amazon Athena, Amazon EMR, etc). | | Amazon Rekognition | AWS Rekognition is a service that lets developers working with Amazon Web Services add image analysis to their applications. Catalog assets, automate workflows, and extract meaning from your media and applications.| | Amazon Textract | Automatically extract printed text, handwriting, and data from any document. | | Amazon Lookout for Vision | Spot product defects using computer vision to automate quality inspection.Identify missing product components, vehicle and structure damage, and irregularities for comprehensive quality control.| | Amazon CodeGuru | Automate code reviews and optimize application performance with ML-powered recommendations.| | CML | An open source toolkit for using continuous integration in data science projects. Automatically train and test models in production-like environments with GitHub Actions & GitLab CI, and autogenerate visual reports on pull/merge requests. | | Dask | An open source Python library to painlessly transition your analytics code to distributed computing systems (Big Data) | | Statsmodels | A Python-based inferential statistics, hypothesis testing and regression framework | | Gensim | An open-source library for topic modeling of natural language text | | spaCy | A performant natural language processing toolkit | | Grid Studio | Grid studio is a web-based spreadsheet application with full integration of the Python programming language. | |Python Data Science Handbook|Python Data Science Handbook: full text in Jupyter Notebooks| | Shapley | A data-driven framework to quantify the value of classifiers in a machine learning ensemble. | | DAGsHub | A platform built on open source tools for data, model and pipeline management. | | Deepnote | A new kind of data science notebook. Jupyter-compatible, with real-time collaboration and running in the cloud. | | Valohai | An MLOps platform that handles machine orchestration, automatic reproducibility and deployment. | | PyMC3 | A Python Library for Probabalistic Programming (Bayesian Inference and Machine Learning) | | PyStan | Python interface to Stan (Bayesian inference and modeling) | | hmmlearn | Unsupervised learning and inference of Hidden Markov Models | | Chaos Genius | ML powered analytics engine for outlier/anomaly detection and root cause analysis |
Machine Learning in General Purpose
- scikit-learn
- scikit-multilearn
- sklearn-expertsys
- scikit-feature
- scikit-rebate
- seqlearn
- sklearn-bayes
- sklearn-crfsuite
- sklearn-deap
- sigopt_sklearn
- sklearn-evaluation
- scikit-image
- scikit-opt
- scikit-posthocs
- pystruct
- Shogun
- xLearn
- cuML
- causalml
- mlpack
- MLxtend
- modAL
- Sparkit-learn
- hyperlearn
- dlib
- RuleFit
- pyGAM
- Deepchecks
Deep Learning
pytorch
- PyTorch
- torchvision
- torchtext
- torchaudio
- ignite
- PyTorchNet
- PyToune
- skorch
- PyVarInf
- pytorch_geometric
- GPyTorch
- pyro
- Catalyst
- pytorch_tabular
tensorflow
- TensorFlow
- TensorLayer
- TFLearn
- Sonnet
- tensorpack
- TRFL
- Polyaxon
- NeuPy
- tfdeploy
- tensorflow-upstream
- TensorFlow Fold
- tensorlm
- TensorLight
- Mesh TensorFlow
- Ludwig
- TF-Agents
- TensorForce
keras
Visualization Tools - Environments
- altair
- addepar
- amcharts
- anychart
- bokeh
- slemma
- cartodb
- Cube
- d3plus
- Data-Driven Documents(D3js)
- datahero
- dygraphs
- ECharts
- exhibit
- gephi
- ggplot2
- Glue
- Google Chart Gallery
- highcarts
- import.io
- ipychart
- jqplot
- Matplotlib
- nvd3
- Netron
- Opendata-tools
- Openrefine
- plot.ly
- raw
- Seaborn
- techanjs
- Timeline
- variancecharts
- vida
- vizzu
- Wrangler
- r2d3
- NetworkX
- Redash
- C3
- TensorWatch
Journals, Publications and Magazines
- ICML - International Conference on Machine Learning
- GECCO - The Genetic and Evolutionary Computation Conference (GECCO)
- epjdatascience
- Journal of Data Science - an international journal devoted to applications of statistical methods at large
- Big Data Research
- Journal of Big Data
- Big Data & Society
- Data Science Journal
- datatau.com/news - Like Hacker News, but for data
- Data Science Trello Board
- Medium Data Science Topic - Data Science related publications on medium
- Towards Data Science Genetic Algorithm Topic -Genetic Algorithm related Publications onTowards Data Science
Presentations
- How to Become a Data Scientist
- Introduction to Data Science
- Intro to Data Science for Enterprise Big Data
- How to Interview a Data Scientist
- How to Share Data with a Statistician
- The Science of a Great Career in Data Science
- What Does a Data Scientist Do?
- Building Data Start-Ups: Fast, Big, and Focused
- How to win data science competitions with Deep Learning
- Full-Stack Data Scientist
Podcasts
- AI at Home
- AI Today
- Adversarial Learning
- Becoming a Data Scientist
- Chai time Data Science
- Data Crunch
- Data Engineering Podcast
- Data Science at Home
- Data Science Mixer
- Data Skeptic
- Data Stories
- Datacast
- DataFramed
- DataTalks.Club
- Gradient Dissent
- Learning Machines 101
- Let's Data (Brazil)
- Linear Digressions
- Not So Standard Deviations
- O'Reilly Data Show Podcast
- Partially Derivative
- Superdatascience
- The Data Engineering Show
- The Radical AI Podcast
- The Robot Brains Podcast
- What's The Point
Books
- Artificial Intelligence with Python - Tutorialspoint
- Machine Learning from Scratch
- Probabilistic Machine Learning: An Introduction
- A Comprehensive Guide to Machine Learning
- Become a Leader in Data Science - Early access
- Fighting Churn With Data
- Data Science at Scale with Python and Dask
- Python Data Science Handbook
- The Data Science Handbook: Advice and Insights from 25 Amazing Data Scientists
- Think Like a Data Scientist
- Introducing Data Science
- Practical Data Science with R
- Everyday Data Science & (cheaper PDF version)
- Exploring Data Science - free eBook sampler
- Exploring the Data Jungle - free eBook sampler
- Classic Computer Science Problems in Python
- Math for Programmers Early access
- R in Action, Third Edition Early access
- Data Science Bookcamp Early access
- Data Science Thinking: The Next Scientific, Technological and Economic Revolution
- Applied Data Science: Lessons Learned for the Data-Driven Business
- The Data Science Handbook
- Essential Natural Language Processing - Early access
- Mining Massive Datasets - free e-book comprehended by an online course
- Pandas in Action - Early access
- Genetic Algorithms and Genetic Programming
- Genetic algorithms in search, optimization, and machine learning - Free Download
- Advances in Evolutionary Algorithms - Free Download
- Genetic Programming: New Approaches and Successful Applications - Free Download
- Evolutionary Algorithms - Free Download
- Advances in Genetic Programming, Vol. 3 - Free Download
- Global Optimization Algorithms: Theory and Application - Free Download
- Genetic Algorithms and Evolutionary Computation - Free Download
- Convex Optimization - Convex Optimization book by Stephen Boyd - Free Download
- Data Analysis with Python and PySpark - Early access
- R for Data Science
- Build a Career in Data Science
- Machine Learning Bookcamp - Early access
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition
- Effective Data Science Infrastructure
- Practical MLOps: How to Get Ready for Production Models
- Data Analysis with Python and PySpark
- Regression, a Friendly guide - Early access
- Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing
- Data Science at the Command Line: Facing the Future with Time-Tested Tools
- Machine Learning - CIn UFPE
- Machine Learning with Python - Tutorialspoint
- Deep Learning
- Designing Cloud Data Platforms - Early access
- An Introduction to Statistical Learning with Applications in R
- Deep Learning with PyTorch
- Neural Networks and Deep Learning
- Deep Learning Cookbook
- Introduction to Machine Learning with Python
- Artificial Intelligence: Foundations of Computational Agents, 2nd Edition - Free HTML version
- The Quest for Artificial Intelligence: A History of Ideas and Achievements - Free Download
- Graph Algorithms for Data Science - Early access
- Data Mesh in Action - Early access
Socialize
- Bloggers
- Facebook Accounts
- Twitter Accounts
- Newsletters
- Telegram Channels
- Slack Communities
- Data Science Competitions
Bloggers
- Wes McKinney - Wes McKinney Archives.
- Matthew Russell - Mining The Social Web.
- Greg Reda - Greg Reda Personal Blog
- Kevin Davenport - Kevin Davenport Personal Blog
- Julia Evans - Recurse Center alumna
- Hakan Kardas - Personal Web Page
- Sean J. Taylor - Personal Web Page
- Drew Conway - Personal Web Page
- Hilary Mason - Personal Web Page
- Noah Iliinsky - Personal Blog
- Matt Harrison - Personal Blog
- Vamshi Ambati - AllThings Data Sciene
- Prash Chan - Tech Blog on Master Data Management And Every Buzz Surrounding It
- Clare Corthell - The Open Source Data Science Masters
- Paul Miller Based in the UK and working globally, Cloud of Data's consultancy services help clients understand the implications of taking data and more to the Cloud.
- Data Science London Data Science London is a non-profit organization dedicated to the free, open, dissemination of data science. We are the largest data science community in Europe. We are more than 3,190 data scientists and data geeks in our community.
- Datawrangling by Peter Skomoroch. MACHINE LEARNING, DATA MINING, AND MORE
- Quora Data Science - Data Science Questions and Answers from experts
- Siah a PhD student at Berkeley
- Data Science Report MDS, Inc. Helps Build Careers in Data Science, Advanced Analytics, Big Data Architecture, and High Performance Software Engineering
- Louis Dorard a technology guy with a penchant for the web and for data, big and small
- Machine Learning Mastery about helping professional programmers to confidently apply machine learning algorithms to address complex problems.
- Daniel Forsyth - Personal Blog
- Data Science Weekly - Weekly News Blog
- Revolution Analytics - Data Science Blog
- R Bloggers - R Bloggers
- The Practical Quant Big data
- Datascope Analytics data-driven consulting and design
- Yet Another Data Blog Yet Another Data Blog
- Spenczar a data scientist at Twitch. I handle the whole data pipeline, from tracking to model-building to reporting.
- KD Nuggets Data Mining, Analytics, Big Data, Data, Science not a blog a portal
- Meta Brown - Personal Blog
- Data Scientist is building the data scientist culture.
- WhatSTheBigData is some of, all of, or much more than the above and this blog explores its impact on information technology, the business world, government agencies, and our lives.
- Tevfik Kosar - Magnus Notitia
- New Data Scientist How a Social Scientist Jumps into the World of Big Data
- Harvard Data Science - Thoughts on Statistical Computing and Visualization
- Data Science 101 - Learning To Be A Data Scientist
- Kaggle Past Solutions
- DataScientistJourney
- NYC Taxi Visualization Blog
- Learning Lover
- Dataists
- Data-Mania
- Data-Magnum
- Map Reduce Blog
- P-value - Musings on data science, machine learning and stats.
- datascopeanalytics
- Digital transformation
- datascientistjourney
- Data Mania Blog - The File Drawer - Chris Said's science blog
- Emilio Ferrara's web page
- DataNews
- Reddit TextMining
- Periscopic
- Hilary Parker
- Data Stories
- Data Science Lab
- Meaning of
- Adventures in Data Land
- DATA MINERS BLOG
- Dataclysm
- FlowingData - Visualization and Statistics
- Calculated Risk
- O'reilly Learning Blog
- Dominodatalab
- i am trask - A Machine Learning Craftsmanship Blog
- Vademecum of Practical Data Science - Handbook and recipes for data-driven solutions of real-world problems
- Dataconomy - A blog on the new emerging data economy
- Springboard - A blog with resources for data science learners
- Analytics Vidhya - A full-fledged website about data science and analytics study material.
- Occam's Razor - Focused on Web Analytics.
- Data School - Data science tutorials for beginners!
- Colah's Blog - Blog for understanding Neural Networks!
- Sebastian's Blog - Blog for NLP and transfer learning!
- Distill - Dedicated to clear explanations of machine learning!
- Chris Albon's Website - Data Science and AI notes
- Andrew Carr - Data Science with Esoteric programming languages
- floydhub - Blog for Evolutionary Algorithms
- Jingles - Review and extract key concepts from academic papers
- nbshare - Data Science notebooks
- Deep and Shallow - All things Deep and Shallow in Data Science
- Loic Tetrel - Data science blog
- Chip Huyen's Blog - ML Engineering, MLOps, and the use of ML in startups
- Maria Khalusova - Data science blog
Facebook Accounts
- Data
- Big Data Scientist
- Data Science Day
- Data Science Academy
- Facebook Data Science Page
- Data Science London
- Data Science Technology and Corporation
- Data Science - Closed Group
- Center for Data Science
- Big data hadoop NOSQL Hive Hbase
- Analytics, Data Mining, Predictive Modeling, Artificial Intelligence
- Big Data Analytics using R
- Big Data Analytics with R and Hadoop
- Big Data Learnings
- Big Data, Data Science, Data Mining & Statistics
- BigData/Hadoop Expert
- Data Mining / Machine Learning / AI
- Data Mining/Big Data - Social Network Ana
- Vademecum of Practical Data Science
- Veri Bilimi Istanbul
- The Data Science Blog
Twitter Accounts
| Twitter | Description | | --- | --- | | Big Data Combine | Rapid-fire, live tryouts for data scientists seeking to monetize their models as trading strategies | | Big Data Mania | Data Viz Wiz , Data Journalist , Growth Hacker , Author of Data Science for Dummies (2015) | | Big Data Science | Big Data, Data Science, Predictive Modeling, Business Analytics, Hadoop, Decision and Operations Research. | | Charlie Greenbacker | Director of Data Science at @ExploreAltamira | | Chris Said | Data scientist at Twitter | | Clare Corthell | Dev, Design, Data Science @mattermark #hackerei | | DADI Charles-Abner | #datascientist @Ekimetrics. , #machinelearning #dataviz #DynamicCharts #Hadoop #R #Python #NLP #Bitcoin #dataenthousiast | | Data Science Central | Data Science Central is the industry's single resource for Big Data practitioners. | | Data Science London | Data Science. Big Data. Data Hacks. Data Junkies. Data Startups. Open Data | | Data Science Renee | Documenting my path from SQL Data Analyst pursuing an Engineering Master's Degree to Data Scientist | | Data Science Report | Mission is to help guide & advance careers in Data Science & Analytics | | Data Science Tips | Tips and Tricks for Data Scientists around the world! #datascience #bigdata | | Data Vizzard | DataViz, Security, Military | | DataScienceX | | | deeplearning4j | | | DJ Patil | White House Data Chief, VP @ RelateIQ. | | Domino Data Lab | | | Drew Conway | Data nerd, hacker, student of conflict. | | Emilio Ferrara | #Networks, #MachineLearning and #DataScience. I work on #Social Media. Postdoc at @IndianaUniv | | Erin Bartolo | Running with #BigData--enjoying a love/hate relationship with its hype. @iSchoolSU #DataScience Program Mgr. | | Greg Reda | Working @ GrubHub about data and pandas | | Gregory Piatetsky | KDnuggets President, Analytics/Big Data/Data Mining/Data Science expert, KDD & SIGKDD co-founder, was Chief Scientist at 2 startups, part-time philosopher. | | Hadley Wickham | Chief Scientist at RStudio, and an Adjunct Professor of Statistics at the University of Auckland, Stanford University, and Rice University. | | Hakan Kardas | Data Scientist | | Hilary Mason | Data Scientist in Residence at @accel. | | Jeff Hammerbacher | ReTweeting about data science | | John Myles White | Scientist at Facebook and Julia developer. Author of Machine Learning for Hackers and Bandit Algorithms for Website Optimization. Tweets reflect my views only. | | Juan Miguel Lavista | Principal Data Scientist @ Microsoft Data Science Team | | Julia Evans | Hacker - Pandas - Data Analyze | | Kenneth Cukier | The Economist's Data Editor and co-author of Big Data (http://www.big-data-book.com/). | | Kevin Davenport | Organizer of https://www.meetup.com/San-Diego-Data-Science-R-Users-Group/ | | Kevin Markham | Data science instructor, and founder of Data School | | Kim Rees | Interactive data visualization and tools. Data flaneur. | | Kirk Borne | DataScientist, PhD Astrophysicist, Top #BigData Influencer. | | Linda Regber | Data story teller, visualizations. | | Luis Rei | PhD Student. Programming, Mobile, Web. Artificial Intelligence, Intelligent Robotics Machine Learning, Data Mining, Natural Language Processing, Data Science. | | Mark Stevenson | Data Analytics Recruitment Specialist at Salt (@SaltJobs) Analytics - Insight - Big Data - Datascience | | Matt Harrison | Opinions of full-stack Python guy, author, instructor, currently playing Data Scientist. Occasional fathering, husbanding, organic gardening. | | Matthew Russell | Mining the Social Web. | | Mert Nuhoğlu | Data Scientist at BizQualify, Developer | | Monica Rogati | Data @ Jawbone. Turned data into stories & products at LinkedIn. Text mining, applied machine learning, recommender systems. Ex-gamer, ex-machine coder; namer. | | Noah Iliinsky | Visualization & interaction designer. Practical cyclist. Author of vis books: https://www.oreilly.com/pub/au/4419 | | Paul Miller | Cloud Computing/ Big Data/ Open Data Analyst & Consultant. Writer, Speaker & Moderator. Gigaom Research Analyst. | | Peter Skomoroch | Creating intelligent systems to automate tasks & improve decisions. Entrepreneur, ex Principal Data Scientist @LinkedIn. Machine Learning, ProductRei, Networks | | Prash Chan | Solution Architect @ IBM, Master Data Management, Data Quality & Data Governance Blogger. Data Science, Hadoop, Big Data & Cloud. | | Quora Data Science | Quora's data science topic | | R-Bloggers | Tweet blog posts from the R blogosphere, data science conferences and (!) open jobs for data scientists. | | Rand Hindi | | | Randy Olson | Computer scientist researching artificial intelligence. Data tinkerer. Community leader for @DataIsBeautiful. #OpenScience advocate. | | Recep Erol | Data Science geek @ UALR | | Ryan Orban | Data scientist, genetic origamist, hardware aficionado | | Sean J. Taylor | Social Scientist. Hacker. Facebook Data Science Team. Keywords: Experiments, Causal Inference, Statistics, Machine Learning, Economics. | | Silvia K. Spiva | #DataScience at Cisco | | Harsh B. Gupta | Data Scientist at BBVA Compass | | Spencer Nelson | Data nerd | | Talha Oz | Enjoys ABM, SNA, DM, ML, NLP, HI, Python, Java. Top percentile kaggler/data scientist | | Tasos Skarlatidis | Complex Event Processing, Big Data, Artificial Intelligence and Machine Learning. Passionate about programming and open-source. | | Terry Timko | InfoGov; Bigdata; Data as a Service; Data Science; Open, Social & Business Data Convergence | | Tony Baer | IT analyst with Ovum covering Big Data & data management with some systems engineering thrown in. | | Tony Ojeda | Data Scientist , Author , Entrepreneur. Co-founder @DataCommunityDC. Founder @DistrictDataLab. #DataScience #BigData #DataDC | | Vamshi Ambati | Data Science @ PayPal. #NLP, #machinelearning; PhD, Carnegie Mellon alumni (Blog: https://allthingsds.wordpress.com ) | | Wes McKinney | Pandas (Python Data Analysis library). | | WileyEd | Senior Manager - @Seagate Big Data Analytics @McKinsey Alum #BigData + #Analytics Evangelist #Hadoop, #Cloud, #Digital, & #R Enthusiast | | WNYC Data News Team | The data news crew at @WNYC. Practicing data-driven journalism, making it visual and showing our work. | | Alexey Grigorev | Data science author |
Newsletters
- AI Digest. A weekly newsletter to keep up to date with AI, machine learning, and data science. Archive.
- DataTalks.Club. A weekly newsletter about data-related things. Archive.
- The Analytics Engineering Roundup. A newsletter about data science. Archive.
Youtube Videos & Channels
- What is machine learning?
- Andrew Ng: Deep Learning, Self-Taught Learning and Unsupervised Feature Learning
- Data36 - Data Science for Beginners by Tomi Mester
- Deep Learning: Intelligence from Big Data
- Interview with Google's AI and Deep Learning 'Godfather' Geoffrey Hinton
- Introduction to Deep Learning with Python
- What is machine learning, and how does it work?
- Data School - Data Science Education
- Neural Nets for Newbies by Melanie Warrick (May 2015)
- Neural Networks video series by Hugo Larochelle
- Google DeepMind co-founder Shane Legg - Machine Super Intelligence
- Data Science Primer
- Data Science with Genetic Algorithms
- Data Science for Beginners
- DataTalks.Club
- Mildlyoverfitted - Tutorials on intermediate ML/DL topics
- mlops.community - Interviews of industry experts about production ML
- ML Street Talk - Unabashedly technical and non-commercial, so you will hear no annoying pitches.
- Neural networks by 3Blue1Brown
- Neural networks from scratch by Sentdex
- Manning Publications YouTube channel
- Ask Dr Chong: How to Lead in Data Science - Part 1
- Ask Dr Chong: How to Lead in Data Science - Part 2
- Ask Dr Chong: How to Lead in Data Science - Part 3
- Ask Dr Chong: How to Lead in Data Science - Part 4
- Ask Dr Chong: How to Lead in Data Science - Part 5
- Ask Dr Chong: How to Lead in Data Science - Part 6
- Regression Models: Applying simple Poisson regression
Telegram Channels
- Open Data Science – First Telegram Data Science channel. Covering all technical and popular staff about anything related to Data Science: AI, Big Data, Machine Learning, Statistics, general Math and the applications of former.
- Loss function porn — Beautiful posts on DS/ML theme with video or graphic vizualization.
- Machinelearning – Daily ML news.
Slack Communities
Github Groups
Competitions
Some data mining competition platforms
Fun
Infographic
| Preview | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| Key differences of a data scientist vs. data engineer |
|
| A visual guide to Becoming a Data Scientist in 8 Steps by DataCamp (img) |
|
| Mindmap on required skills (img) |
|
| Swami Chandrasekaran made a Curriculum via Metro map. |
|
| by @kzawadz via twitter |
|
| By Data Science Central |
|
| Data Science Wars: R vs Python |
|
| How to select statistical or machine learning techniques |
|
| Choosing the Right Estimator |
|
| The Data Science Industry: Who Does What |
|
| Data Science ~~Venn~~ Euler Diagram |
|
| Different Data Science Skills and Roles from this article by Springboard |
|
| A simple and friendly way of teaching your non-data scientist/non-statistician colleagues how to avoid mistakes with data. From Geckoboard's Data Literacy Lessons. |
Data Sets
- Academic Torrents
- hadoopilluminated.com
- data.gov - The home of the U.S. Government's open data
- United States Census Bureau
- usgovxml.com
- enigma.com - Navigate the world of public data - Quickly search and analyze billions of public records published by governments, companies and organizations.
- datahub.io
- aws.amazon.com/datasets
- datacite.org
- The official portal for European data
- quandl.com - Get the data you need in the form you want; instant download, API or direct to your app.
- figshare.com
- GeoLite Legacy Downloadable Databases
- Quora's Big Datasets Answer
- Public Big Data Sets
- Kaggle Datasets
- A Deep Catalog of Human Genetic Variation
- A community-curated database of well-known people, places, and things
- Google Public Data
- World Bank Data
- NYC Taxi data
- Open Data Philly Connecting people with data for Philadelphia
- grouplens.org Sample movie (with ratings), book and wiki datasets
- UC Irvine Machine Learning Repository - contains data sets good for machine learning
- research-quality data sets by Hilary Mason
- National Climatic Data Center - NOAA
- ClimateData.us (related: U.S. Climate Resilience Toolkit)
- r/datasets
- MapLight - provides a variety of data free of charge for uses that are freely available to the general public. Click on a data set below to learn more
- GHDx - Institute for Health Metrics and Evaluation - a catalog of health and demographic datasets from around the world and including IHME results
- St. Louis Federal Reserve Economic Data - FRED
- New Zealand Institute of Economic Research – Data1850
- Open Data Sources
- UNICEF Data
- undata
- NASA SocioEconomic Data and Applications Center - SEDAC
- The GDELT Project
- Sweden, Statistics
- Github free data source list
- StackExchange Data Explorer - an open source tool for running arbitrary queries against public data from the Stack Exchange network.
- SocialGrep - a collection of open Reddit datasets.
- San Fransisco Government Open Data
- IBM Blog about open data
- IBM Asset Dataset
- Open data Index
- Public Git Archive
- GHTorrent
- Microsoft Research Open Data
- Open Government Data Platform India
- Google Dataset Search (beta)
- NAYN.CO Turkish News with categories
- Covid-19
- Covid-19 Google
- Enron Email Dataset
- 5000 Images of Clothes
Comics
Awesome Data Science
Hobby
Other Lists
- Other amazingly awesome lists can be found in the awesome-awesomeness
- Awesome Machine Learning
- lists
- awesome-dataviz
- awesome-python
- Data Science IPython Notebooks.
- awesome-r
- awesome-datasets
- awesome-Machine Learning & Deep Learning Tutorials
- Awesome Data Science Ideas
- Machine Learning for Software Engineers
- Community Curated Data Science Resources
- Awesome Machine Learning On Source Code
- Awesome Community Detection
- Awesome Graph Classification
- Awesome Decision Tree Papers
- Awesome Fraud Detection Papers
- Awesome Gradient Boosting Papers
- Awesome Computer Vision Models
- Awesome Monte Carlo Tree Search
- Glossary of common statistics and ML terms
- 100 NLP Papers
- Awesome Game Datasets
- Data Science Interviews Questions
- Awesome Explainable Graph Reasoning
- Top Data Science Interview Questions
- Awesome Drug Synergy, Interaction and Polypharmacy Prediction
Data Science Tutorials & Resources for Beginners 
If you want to know more about Data Science but don't know where to start this list is for you! :chart_with_upwards_trend:
No previous knowledge required but Python and statistics basics will definitely come in handy. These ressources have been used successfully for many beginners at my local Data Science student group ML-KA.
What is Data Science?
- 'What is Data Science?' on Quora
- Explanation of important vocabulary - Differentiation of Big Data, Machine Learning, Data Science.
- Data Science for Business (Book) - An introduction to Data Science and its use as a business asset.
Common Algorithms and Procedures
- Supervised vs unsupervised learning - The two most common types of Machine Learning algorithms.
- 9 important Data Science algorithms and their implementation
- Cross validation - Evaluate the performance of your algorithm / model.
- Feature engineering - Modifying the data to better model predictions.
- Scientific introduction to 10 important Data Science algorithms
- Model ensemble: Explanation - Combine multiple models into one for better performance.
Data Science using Python
This list covers only Python, as many are already familiar with this language. Data Science tutorials using R.
General
- O'Reilly Data Science from Scratch (Book) - Data processing, implementation, and visualization with example code.
- Coursera Applied Data Science - Online Course using Python that covers most of the relevant toolkits.
Learning Python
numpy
numpy is a Python library which provides large multidimensional arrays and fast mathematical operations on them.
pandas
pandas provides efficient data structures and analysis tools for Python. It is build on top of numpy.
- Introduction to pandas
- DataCamp pandas foundations - Paid course, but 30 free days upon account creation (enough to complete course).
- Pandas cheatsheet - Quick overview over the most important functions.
scikit-learn
scikit-learn is the most common library for Machine Learning and Data Science in Python.
- Introduction and first model application
- Rough guide for choosing estimators
- Scikit-learn complete user guide
- Model ensemble: Implementation in Python
Jupyter Notebook
Jupyter Notebook is a web application for easy data visualisation and code presentation.
- Downloading and running first Jupyter notebook
- Example notebook for data exploration
- Seaborn data visualization tutorial - Plot library that works great with Jupyter.
Various other helpful tools and resources
- Template folder structure for organizing Data Science projects
- Anaconda Python distribution - Contains most of the important Python packages for Data Science.
- Spacy - Open source toolkit for working with text-based data.
- LightGBM gradient boosting framework - Successfully used in many Kaggle challenges.
- Amazon AWS - Rent cloud servers for more timeconsuming calculations (r4.xlarge server is a good place to start).
Data Science Challenges for Beginners
Sorted by increasing complexity.
- Walkthrough: House prices challenge - Walkthrough through a simple challenge on house prices.
- Blood Donation Challenge - Predict if a donor will donate again.
- Titanic Challenge - Predict survival on the Titanic.
- Water Pump Challenge - Predict the operating condition of water pumps in Africa.
More advanced resources and lists
Contribute
Contributions welcome! Read the contribution guidelines first.
License
To the extent possible under law, Simon Böhm has waived all copyright and related or neighboring rights to this work. Disclaimer: Some of the links are affiliate links.
Awesome Machine Learning

A curated list of awesome machine learning frameworks, libraries and software (by language). Inspired by awesome-php.
If you want to contribute to this list (please do), send me a pull request or contact me @josephmisiti. Also, a listed repository should be deprecated if:
- Repository's owner explicitly says that "this library is not maintained".
- Not committed for a long time (2~3 years).
Further resources:
-
For a list of free machine learning books available for download, go here.
-
For a list of professional machine learning events, go here.
-
For a list of (mostly) free machine learning courses available online, go here.
-
For a list of blogs and newsletters on data science and machine learning, go here.
-
For a list of free-to-attend meetups and local events, go here.
Table of Contents
Frameworks and Libraries
- Awesome Machine Learning
- Table of Contents
- APL
- C
- C++
- Common Lisp
- Clojure
- Crystal
- Elixir
- Erlang
- Fortran
- Go
- Haskell
- Java
- Javascript
- Julia
- Kotlin
- Lua
- Matlab
- .NET
- Objective C
- OCaml
- Perl
- Perl 6
- PHP
- Python
- Ruby
- Rust
- R
- SAS
- Scala
- Scheme
- Swift
- TensorFlow
Tools
APL
General-Purpose Machine Learning
- naive-apl - Naive Bayesian Classifier implementation in APL. [Deprecated]
C
General-Purpose Machine Learning
- Darknet - Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.
- Recommender - A C library for product recommendations/suggestions using collaborative filtering (CF).
- Hybrid Recommender System - A hybrid recommender system based upon scikit-learn algorithms. [Deprecated]
- neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.
- cONNXr - An
ONNXruntime written in pure C (99) with zero dependencies focused on small embedded devices. Run inference on your machine learning models no matter which framework you train it with. Easy to install and compiles everywhere, even in very old devices. - libonnx - A lightweight, portable pure C99 onnx inference engine for embedded devices with hardware acceleration support.
Computer Vision
- CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library.
- VLFeat - VLFeat is an open and portable library of computer vision algorithms, which has a Matlab toolbox.
C++
Computer Vision
- DLib - DLib has C++ and Python interfaces for face detection and training general object detectors.
- EBLearn - Eblearn is an object-oriented C++ library that implements various machine learning models [Deprecated]
- OpenCV - OpenCV has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
- VIGRA - VIGRA is a genertic cross-platform C++ computer vision and machine learning library for volumes of arbitrary dimensionality with Python bindings.
- Openpose - A real-time multi-person keypoint detection library for body, face, hands, and foot estimation
General-Purpose Machine Learning
- BanditLib - A simple Multi-armed Bandit library. [Deprecated]
- Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind. [DEEP LEARNING]
- CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, contains fast inference implementation and supports CPU and GPU (even multi-GPU) computation.
- CNTK - The Computational Network Toolkit (CNTK) by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph.
- CUDA - This is a fast C++/CUDA implementation of convolutional [DEEP LEARNING]
- DeepDetect - A machine learning API and server written in C++11. It makes state of the art machine learning easy to work with and integrate into existing applications.
- Distributed Machine learning Tool Kit (DMTK) - A distributed machine learning (parameter server) framework by Microsoft. Enables training models on large data sets across multiple machines. Current tools bundled with it include: LightLDA and Distributed (Multisense) Word Embedding.
- DLib - A suite of ML tools designed to be easy to imbed in other applications.
- DSSTNE - A software library created by Amazon for training and deploying deep neural networks using GPUs which emphasizes speed and scale over experimental flexibility.
- DyNet - A dynamic neural network library working well with networks that have dynamic structures that change for every training instance. Written in C++ with bindings in Python.
- Fido - A highly-modular C++ machine learning library for embedded electronics and robotics.
- igraph - General purpose graph library.
- Intel® oneAPI Data Analytics Library - A high performance software library developed by Intel and optimized for Intel's architectures. Library provides algorithmic building blocks for all stages of data analytics and allows to process data in batch, online and distributed modes.
- LightGBM - Microsoft's fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
- libfm - A generic approach that allows to mimic most factorization models by feature engineering.
- MLDB - The Machine Learning Database is a database designed for machine learning. Send it commands over a RESTful API to store data, explore it using SQL, then train machine learning models and expose them as APIs.
- mlpack - A scalable C++ machine learning library.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- ParaMonte - A general-purpose library with C/C++ interface for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
- proNet-core - A general-purpose network embedding framework: pair-wise representations optimization Network Edit.
- PyCaret - An open-source, low-code machine learning library in Python that automates machine learning workflows.
- PyCUDA - Python interface to CUDA
- ROOT - A modular scientific software framework. It provides all the functionalities needed to deal with big data processing, statistical analysis, visualization and storage.
- shark - A fast, modular, feature-rich open-source C++ machine learning library.
- Shogun - The Shogun Machine Learning Toolbox.
- sofia-ml - Suite of fast incremental algorithms.
- Stan - A probabilistic programming language implementing full Bayesian statistical inference with Hamiltonian Monte Carlo sampling.
- Timbl - A software package/C++ library implementing several memory-based learning algorithms, among which IB1-IG, an implementation of k-nearest neighbor classification, and IGTree, a decision-tree approximation of IB1-IG. Commonly used for NLP.
- Vowpal Wabbit (VW) - A fast out-of-core learning system.
- Warp-CTC - A fast parallel implementation of Connectionist Temporal Classification (CTC), on both CPU and GPU.
- XGBoost - A parallelized optimized general purpose gradient boosting library.
- ThunderGBM - A fast library for GBDTs and Random Forests on GPUs.
- ThunderSVM - A fast SVM library on GPUs and CPUs.
- LKYDeepNN - A header-only C++11 Neural Network library. Low dependency, native traditional chinese document.
- xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertising and recommender systems.
- Featuretools - A library for automated feature engineering. It excels at transforming transactional and relational datasets into feature matrices for machine learning using reusable feature engineering "primitives".
- skynet - A library for learning neural networks, has C-interface, net set in JSON. Written in C++ with bindings in Python, C++ and C#.
- Feast - A feature store for the management, discovery, and access of machine learning features. Feast provides a consistent view of feature data for both model training and model serving.
- Hopsworks - A data-intensive platform for AI with the industry's first open-source feature store. The Hopsworks Feature Store provides both a feature warehouse for training and batch based on Apache Hive and a feature serving database, based on MySQL Cluster, for online applications.
- Polyaxon - A platform for reproducible and scalable machine learning and deep learning.
- QuestDB A relational column-oriented database designed for real-time analytics on time series and event data.
Natural Language Processing
- BLLIP Parser - BLLIP Natural Language Parser (also known as the Charniak-Johnson parser).
- colibri-core - C++ library, command line tools, and Python binding for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
- CRF++ - Open source implementation of Conditional Random Fields (CRFs) for segmenting/labeling sequential data & other Natural Language Processing tasks. [Deprecated]
- CRFsuite - CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data. [Deprecated]
- frog - Memory-based NLP suite developed for Dutch: PoS tagger, lemmatiser, dependency parser, NER, shallow parser, morphological analyzer.
- libfolia - C++ library for the FoLiA format
- MeTA - MeTA : ModErn Text Analysis is a C++ Data Sciences Toolkit that facilitates mining big text data.
- MIT Information Extraction Toolkit - C, C++, and Python tools for named entity recognition and relation extraction
- ucto - Unicode-aware regular-expression based tokenizer for various languages. Tool and C++ library. Supports FoLiA format.
Speech Recognition
- Kaldi - Kaldi is a toolkit for speech recognition written in C++ and licensed under the Apache License v2.0. Kaldi is intended for use by speech recognition researchers.
Sequence Analysis
- ToPS - This is an object-oriented framework that facilitates the integration of probabilistic models for sequences over a user defined alphabet. [Deprecated]
Gesture Detection
- grt - The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.
Common Lisp
General-Purpose Machine Learning
- mgl - Neural networks (boltzmann machines, feed-forward and recurrent nets), Gaussian Processes.
- mgl-gpr - Evolutionary algorithms. [Deprecated]
- cl-libsvm - Wrapper for the libsvm support vector machine library. [Deprecated]
- cl-online-learning - Online learning algorithms (Perceptron, AROW, SCW, Logistic Regression).
- cl-random-forest - Implementation of Random Forest in Common Lisp.
Clojure
Natural Language Processing
- Clojure-openNLP - Natural Language Processing in Clojure (opennlp).
- Infections-clj - Rails-like inflection library for Clojure and ClojureScript.
General-Purpose Machine Learning
- tech.ml - A machine learning platform based on tech.ml.dataset, supporting not just ml algorithms, but also relevant ETL processing; wraps multiple machine learning libraries
- clj-ml - A machine learning library for Clojure built on top of Weka and friends.
- clj-boost - Wrapper for XGBoost
- Touchstone - Clojure A/B testing library.
- Clojush - The Push programming language and the PushGP genetic programming system implemented in Clojure.
- lambda-ml - Simple, concise implementations of machine learning techniques and utilities in Clojure.
- Infer - Inference and machine learning in Clojure. [Deprecated]
- Encog - Clojure wrapper for Encog (v3) (Machine-Learning framework that specializes in neural-nets). [Deprecated]
- Fungp - A genetic programming library for Clojure. [Deprecated]
- Statistiker - Basic Machine Learning algorithms in Clojure. [Deprecated]
- clortex - General Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]
- comportex - Functionally composable Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]
Deep Learning
- MXNet - Bindings to Apache MXNet - part of the MXNet project
- Deep Diamond - A fast Clojure Tensor & Deep Learning library
- jutsu.ai - Clojure wrapper for deeplearning4j with some added syntactic sugar.
- cortex - Neural networks, regression and feature learning in Clojure.
- Flare - Dynamic Tensor Graph library in Clojure (think PyTorch, DynNet, etc.)
- dl4clj - Clojure wrapper for Deeplearning4j.
Data Analysis
- tech.ml.dataset - Clojure dataframe library and pipeline for data processing and machine learning
- Tablecloth - A dataframe grammar wrapping tech.ml.dataset, inspired by several R libraries
- Panthera - Clojure API wrapping Python's Pandas library
- Incanter - Incanter is a Clojure-based, R-like platform for statistical computing and graphics.
- PigPen - Map-Reduce for Clojure.
- Geni - a Clojure dataframe library that runs on Apache Spark
Data Visualization
- Hanami : Clojure(Script) library and framework for creating interactive visualization applications based in Vega-Lite (VGL) and/or Vega (VG) specifications. Automatic framing and layouts along with a powerful templating system for abstracting visualization specs
- Saite - Clojure(Script) client/server application for dynamic interactive explorations and the creation of live shareable documents capturing them using Vega/Vega-Lite, CodeMirror, markdown, and LaTeX
- Oz - Data visualisation using Vega/Vega-Lite and Hiccup, and a live-reload platform for literate-programming
- Envision - Clojure Data Visualisation library, based on Statistiker and D3.
- Pink Gorilla Notebook - A Clojure/Clojurescript notebook application/-library based on Gorilla-REPL
- clojupyter - A Jupyter kernel for Clojure - run Clojure code in Jupyter Lab, Notebook and Console.
- notespace - Notebook experience in your Clojure namespace
- Delight - A listener that streams your spark events logs to delight, a free and improved spark UI
Interop
- Java Interop - Clojure has Native Java Interop from which Java's ML ecosystem can be accessed
- JavaScript Interop - ClojureScript has Native JavaScript Interop from which JavaScript's ML ecosystem can be accessed
- Libpython-clj - Interop with Python
- ClojisR - Interop with R and Renjin (R on the JVM)
Misc
- Neanderthal - Fast Clojure Matrix Library (native CPU, GPU, OpenCL, CUDA)
- kixistats - A library of statistical distribution sampling and transducing functions
- fastmath - A collection of functions for mathematical and statistical computing, macine learning, etc., wrapping several JVM libraries
- matlib - a Clojure library of optimisation and control theory tools and convenience functions based on Neanderthal.
Extra
- Scicloj - Curated list of ML related resources for Clojure.
Crystal
General-Purpose Machine Learning
- machine - Simple machine learning algorithm.
- crystal-fann - FANN (Fast Artificial Neural Network) binding.
Elixir
General-Purpose Machine Learning
- Simple Bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
- emel - A simple and functional machine learning library written in Elixir.
- Tensorflex - Tensorflow bindings for the Elixir programming language.
Natural Language Processing
- Stemmer - An English (Porter2) stemming implementation in Elixir.
Erlang
General-Purpose Machine Learning
- Disco - Map Reduce in Erlang. [Deprecated]
Fortran
General-Purpose Machine Learning
- neural-fortran - A parallel neural net microframework. Read the paper here.
Data Analysis / Data Visualization
- ParaMonte - A general-purpose Fortran library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
Go
Natural Language Processing
- snowball - Snowball Stemmer for Go.
- word-embedding - Word Embeddings: the full implementation of word2vec, GloVe in Go.
- sentences - Golang implementation of Punkt sentence tokenizer.
- go-ngram - In-memory n-gram index with compression. [Deprecated]
- paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm. [Deprecated]
- go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm. [Deprecated]
General-Purpose Machine Learning
- birdland - A recommendation library in Go.
- eaopt - An evolutionary optimization library.
- leaves - A pure Go implementation of the prediction part of GBRTs, including XGBoost and LightGBM.
- gobrain - Neural Networks written in Go.
- go-featureprocessing - Fast and convenient feature processing for low latency machine learning in Go.
- go-mxnet-predictor - Go binding for MXNet c_predict_api to do inference with a pre-trained model.
- go-ml-benchmarks — benchmarks of machine learning inference for Go
- go-ml-transpiler - An open source Go transpiler for machine learning models.
- golearn - Machine learning for Go.
- goml - Machine learning library written in pure Go.
- gorgonia - Deep learning in Go.
- goro - A high-level machine learning library in the vein of Keras.
- gorse - An offline recommender system backend based on collaborative filtering written in Go.
- therfoo - An embedded deep learning library for Go.
- neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT). [Deprecated]
- go-pr - Pattern recognition package in Go lang. [Deprecated]
- go-ml - Linear / Logistic regression, Neural Networks, Collaborative Filtering and Gaussian Multivariate Distribution. [Deprecated]
- GoNN - GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN. [Deprecated]
- bayesian - Naive Bayesian Classification for Golang. [Deprecated]
- go-galib - Genetic Algorithms library written in Go / Golang. [Deprecated]
- Cloudforest - Ensembles of decision trees in Go/Golang. [Deprecated]
- go-dnn - Deep Neural Networks for Golang (powered by MXNet)
Spatial analysis and geometry
Data Analysis / Data Visualization
- dataframe-go - Dataframes for machine-learning and statistics (similar to pandas).
- gota - Dataframes.
- gonum/mat - A linear algebra package for Go.
- gonum/optimize - Implementations of optimization algorithms.
- gonum/plot - A plotting library.
- gonum/stat - A statistics library.
- SVGo - The Go Language library for SVG generation.
- glot - Glot is a plotting library for Golang built on top of gnuplot.
- globe - Globe wireframe visualization.
- gonum/graph - General-purpose graph library.
- go-graph - Graph library for Go/Golang language. [Deprecated]
- RF - Random forests implementation in Go. [Deprecated]
Computer vision
- GoCV - Package for computer vision using OpenCV 4 and beyond.
Reinforcement learning
- gold - A reinforcement learning library.
Haskell
General-Purpose Machine Learning
- haskell-ml - Haskell implementations of various ML algorithms. [Deprecated]
- HLearn - a suite of libraries for interpreting machine learning models according to their algebraic structure. [Deprecated]
- hnn - Haskell Neural Network library.
- hopfield-networks - Hopfield Networks for unsupervised learning in Haskell. [Deprecated]
- DNNGraph - A DSL for deep neural networks. [Deprecated]
- LambdaNet - Configurable Neural Networks in Haskell. [Deprecated]
Java
Natural Language Processing
- Cortical.io - Retina: an API performing complex NLP operations (disambiguation, classification, streaming text filtering, etc...) as quickly and intuitively as the brain.
- IRIS - Cortical.io's FREE NLP, Retina API Analysis Tool (written in JavaFX!) - See the Tutorial Video.
- CoreNLP - Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words.
- Stanford Parser - A natural language parser is a program that works out the grammatical structure of sentences.
- Stanford POS Tagger - A Part-Of-Speech Tagger (POS Tagger).
- Stanford Name Entity Recognizer - Stanford NER is a Java implementation of a Named Entity Recognizer.
- Stanford Word Segmenter - Tokenization of raw text is a standard pre-processing step for many NLP tasks.
- Tregex, Tsurgeon and Semgrex - Tregex is a utility for matching patterns in trees, based on tree relationships and regular expression matches on nodes (the name is short for "tree regular expressions").
- Stanford Phrasal: A Phrase-Based Translation System
- Stanford English Tokenizer - Stanford Phrasal is a state-of-the-art statistical phrase-based machine translation system, written in Java.
- Stanford Tokens Regex - A tokenizer divides text into a sequence of tokens, which roughly correspond to "words".
- Stanford Temporal Tagger - SUTime is a library for recognizing and normalizing time expressions.
- Stanford SPIED - Learning entities from unlabeled text starting with seed sets using patterns in an iterative fashion.
- Twitter Text Java - A Java implementation of Twitter's text processing library.
- MALLET - A Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.
- OpenNLP - a machine learning based toolkit for the processing of natural language text.
- LingPipe - A tool kit for processing text using computational linguistics.
- ClearTK - ClearTK provides a framework for developing statistical natural language processing (NLP) components in Java and is built on top of Apache UIMA. [Deprecated]
- Apache cTAKES - Apache Clinical Text Analysis and Knowledge Extraction System (cTAKES) is an open-source natural language processing system for information extraction from electronic medical record clinical free-text.
- NLP4J - The NLP4J project provides software and resources for natural language processing. The project started at the Center for Computational Language and EducAtion Research, and is currently developed by the Center for Language and Information Research at Emory University. [Deprecated]
- CogcompNLP - This project collects a number of core libraries for Natural Language Processing (NLP) developed in the University of Illinois' Cognitive Computation Group, for example
illinois-core-utilitieswhich provides a set of NLP-friendly data structures and a number of NLP-related utilities that support writing NLP applications, running experiments, etc,illinois-edisona library for feature extraction from illinois-core-utilities data structures and many other packages.
General-Purpose Machine Learning
- aerosolve - A machine learning library by Airbnb designed from the ground up to be human friendly.
- AMIDST Toolbox - A Java Toolbox for Scalable Probabilistic Machine Learning.
- Datumbox - Machine Learning framework for rapid development of Machine Learning and Statistical applications.
- ELKI - Java toolkit for data mining. (unsupervised: clustering, outlier detection etc.)
- Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
- FlinkML in Apache Flink - Distributed machine learning library in Flink.
- H2O - ML engine that supports distributed learning on Hadoop, Spark or your laptop via APIs in R, Python, Scala, REST/JSON.
- htm.java - General Machine Learning library using Numenta’s Cortical Learning Algorithm.
- liblinear-java - Java version of liblinear.
- Mahout - Distributed machine learning.
- Meka - An open source implementation of methods for multi-label classification and evaluation (extension to Weka).
- MLlib in Apache Spark - Distributed machine learning library in Spark
- Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
- Neuroph - Neuroph is lightweight Java neural network framework
- ORYX - Lambda Architecture Framework using Apache Spark and Apache Kafka with a specialization for real-time large-scale machine learning.
- Samoa SAMOA is a framework that includes distributed machine learning for data streams with an interface to plug-in different stream processing platforms.
- RankLib - RankLib is a library of learning to rank algorithms. [Deprecated]
- rapaio - statistics, data mining and machine learning toolbox in Java.
- RapidMiner - RapidMiner integration into Java code.
- Stanford Classifier - A classifier is a machine learning tool that will take data items and place them into one of k classes.
- Smile - Statistical Machine Intelligence & Learning Engine.
- SystemML - flexible, scalable machine learning (ML) language.
- Weka - Weka is a collection of machine learning algorithms for data mining tasks.
- LBJava - Learning Based Java is a modeling language for the rapid development of software systems, offers a convenient, declarative syntax for classifier and constraint definition directly in terms of the objects in the programmer's application.
- knn-java-library - Just a simple implementation of K-Nearest Neighbors algorithm using with a bunch of similarity measures.
Speech Recognition
- CMU Sphinx - Open Source Toolkit For Speech Recognition purely based on Java speech recognition library.
Data Analysis / Data Visualization
- Flink - Open source platform for distributed stream and batch data processing.
- Hadoop - Hadoop/HDFS.
- Onyx - Distributed, masterless, high performance, fault tolerant data processing. Written entirely in Clojure.
- Spark - Spark is a fast and general engine for large-scale data processing.
- Storm - Storm is a distributed realtime computation system.
- Impala - Real-time Query for Hadoop.
- DataMelt - Mathematics software for numeric computation, statistics, symbolic calculations, data analysis and data visualization.
- Dr. Michael Thomas Flanagan's Java Scientific Library. [Deprecated]
Deep Learning
- Deeplearning4j - Scalable deep learning for industry with parallel GPUs.
- Keras Beginner Tutorial - Friendly guide on using Keras to implement a simple Neural Network in Python
- deepjavalibrary/djl - Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning, designed to be easy to get started with and simple to use for Java developers.
Javascript
Natural Language Processing
- Twitter-text - A JavaScript implementation of Twitter's text processing library.
- natural - General natural language facilities for node.
- Knwl.js - A Natural Language Processor in JS.
- Retext - Extensible system for analyzing and manipulating natural language.
- NLP Compromise - Natural Language processing in the browser.
- nlp.js - An NLP library built in node over Natural, with entity extraction, sentiment analysis, automatic language identify, and so more
Data Analysis / Data Visualization
- D3.js
- High Charts
- NVD3.js
- dc.js
- chartjs
- dimple
- amCharts
- D3xter - Straight forward plotting built on D3. [Deprecated]
- statkit - Statistics kit for JavaScript. [Deprecated]
- datakit - A lightweight framework for data analysis in JavaScript
- science.js - Scientific and statistical computing in JavaScript. [Deprecated]
- Z3d - Easily make interactive 3d plots built on Three.js [Deprecated]
- Sigma.js - JavaScript library dedicated to graph drawing.
- C3.js - customizable library based on D3.js for easy chart drawing.
- Datamaps - Customizable SVG map/geo visualizations using D3.js. [Deprecated]
- ZingChart - library written on Vanilla JS for big data visualization.
- cheminfo - Platform for data visualization and analysis, using the visualizer project.
- Learn JS Data
- AnyChart
- FusionCharts
- Nivo - built on top of the awesome d3 and Reactjs libraries
General-Purpose Machine Learning
- Auto ML - Automated machine learning, data formatting, ensembling, and hyperparameter optimization for competitions and exploration- just give it a .csv file! [Deprecated]
- Convnet.js - ConvNetJS is a Javascript library for training Deep Learning models[DEEP LEARNING] [Deprecated]
- Clusterfck - Agglomerative hierarchical clustering implemented in Javascript for Node.js and the browser. [Deprecated]
- Clustering.js - Clustering algorithms implemented in Javascript for Node.js and the browser. [Deprecated]
- Decision Trees - NodeJS Implementation of Decision Tree using ID3 Algorithm. [Deprecated]
- DN2A - Digital Neural Networks Architecture. [Deprecated]
- figue - K-means, fuzzy c-means and agglomerative clustering.
- Gaussian Mixture Model - Unsupervised machine learning with multivariate Gaussian mixture model.
- Node-fann - FANN (Fast Artificial Neural Network Library) bindings for Node.js [Deprecated]
- Keras.js - Run Keras models in the browser, with GPU support provided by WebGL 2.
- Kmeans.js - Simple Javascript implementation of the k-means algorithm, for node.js and the browser. [Deprecated]
- LDA.js - LDA topic modeling for Node.js
- Learning.js - Javascript implementation of logistic regression/c4.5 decision tree [Deprecated]
- machinelearn.js - Machine Learning library for the web, Node.js and developers
- mil-tokyo - List of several machine learning libraries.
- Node-SVM - Support Vector Machine for Node.js
- Brain - Neural networks in JavaScript [Deprecated]
- Brain.js - Neural networks in JavaScript - continued community fork of Brain.
- Bayesian-Bandit - Bayesian bandit implementation for Node and the browser. [Deprecated]
- Synaptic - Architecture-free neural network library for Node.js and the browser.
- kNear - JavaScript implementation of the k nearest neighbors algorithm for supervised learning.
- NeuralN - C++ Neural Network library for Node.js. It has advantage on large dataset and multi-threaded training. [Deprecated]
- kalman - Kalman filter for Javascript. [Deprecated]
- shaman - Node.js library with support for both simple and multiple linear regression. [Deprecated]
- ml.js - Machine learning and numerical analysis tools for Node.js and the Browser!
- ml5 - Friendly machine learning for the web!
- Pavlov.js - Reinforcement learning using Markov Decision Processes.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- TensorFlow.js - A WebGL accelerated, browser based JavaScript library for training and deploying ML models.
- JSMLT - Machine learning toolkit with classification and clustering for Node.js; supports visualization (see visualml.io).
- xgboost-node - Run XGBoost model and make predictions in Node.js.
- Netron - Visualizer for machine learning models.
- tensor-js - A deep learning library for the browser, accelerated by WebGL and WebAssembly
- WebDNN - Fast Deep Neural Network Javascript Framework. WebDNN uses next generation JavaScript API, WebGPU for GPU execution, and WebAssembly for CPU execution.
Misc
- stdlib - A standard library for JavaScript and Node.js, with an emphasis on numeric computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
- sylvester - Vector and Matrix math for JavaScript. [Deprecated]
- simple-statistics - A JavaScript implementation of descriptive, regression, and inference statistics. Implemented in literate JavaScript with no dependencies, designed to work in all modern browsers (including IE) as well as in Node.js.
- regression-js - A javascript library containing a collection of least squares fitting methods for finding a trend in a set of data.
- Lyric - Linear Regression library. [Deprecated]
- GreatCircle - Library for calculating great circle distance.
- MLPleaseHelp - MLPleaseHelp is a simple ML resource search engine. You can use this search engine right now at https://jgreenemi.github.io/MLPleaseHelp/, provided via Github Pages.
- Pipcook - A JavaScript application framework for machine learning and its engineering.
Demos and Scripts
- The Bot - Example of how the neural network learns to predict the angle between two points created with Synaptic.
- Half Beer - Beer glass classifier created with Synaptic.
- NSFWJS - Indecent content checker with TensorFlow.js
- Rock Paper Scissors - Rock Paper Scissors trained in the browser with TensorFlow.js
- Heroes Wear Masks - A fun TensorFlow.js-based oracle that tells, whether one wears a face mask or not. It can even tell when one wears the mask incorrectly.
Julia
General-Purpose Machine Learning
- MachineLearning - Julia Machine Learning library. [Deprecated]
- MLBase - A set of functions to support the development of machine learning algorithms.
- PGM - A Julia framework for probabilistic graphical models.
- DA - Julia package for Regularized Discriminant Analysis.
- Regression - Algorithms for regression analysis (e.g. linear regression and logistic regression). [Deprecated]
- Local Regression - Local regression, so smooooth!
- Naive Bayes - Simple Naive Bayes implementation in Julia. [Deprecated]
- Mixed Models - A Julia package for fitting (statistical) mixed-effects models.
- Simple MCMC - basic mcmc sampler implemented in Julia. [Deprecated]
- Distances - Julia module for Distance evaluation.
- Decision Tree - Decision Tree Classifier and Regressor.
- Neural - A neural network in Julia.
- MCMC - MCMC tools for Julia. [Deprecated]
- Mamba - Markov chain Monte Carlo (MCMC) for Bayesian analysis in Julia.
- GLM - Generalized linear models in Julia.
- Gaussian Processes - Julia package for Gaussian processes.
- Online Learning [Deprecated]
- GLMNet - Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet.
- Clustering - Basic functions for clustering data: k-means, dp-means, etc.
- SVM - SVM for Julia. [Deprecated]
- Kernel Density - Kernel density estimators for julia.
- MultivariateStats - Methods for dimensionality reduction.
- NMF - A Julia package for non-negative matrix factorization.
- ANN - Julia artificial neural networks. [Deprecated]
- Mocha - Deep Learning framework for Julia inspired by Caffe. [Deprecated]
- XGBoost - eXtreme Gradient Boosting Package in Julia.
- ManifoldLearning - A Julia package for manifold learning and nonlinear dimensionality reduction.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- Merlin - Flexible Deep Learning Framework in Julia.
- ROCAnalysis - Receiver Operating Characteristics and functions for evaluation probabilistic binary classifiers.
- GaussianMixtures - Large scale Gaussian Mixture Models.
- ScikitLearn - Julia implementation of the scikit-learn API.
- Knet - Koç University Deep Learning Framework.
- Flux - Relax! Flux is the ML library that doesn't make you tensor
- MLJ - A Julia machine learning framework
Natural Language Processing
- Topic Models - TopicModels for Julia. [Deprecated]
- Text Analysis - Julia package for text analysis.
- Word Tokenizers - Tokenizers for Natural Language Processing in Julia
- Corpus Loaders - A julia package providing a variety of loaders for various NLP corpora.
- Embeddings - Functions and data dependencies for loading various word embeddings
- Languages - Julia package for working with various human languages
- WordNet - A Julia package for Princeton's WordNet
Data Analysis / Data Visualization
- Graph Layout - Graph layout algorithms in pure Julia.
- LightGraphs - Graph modeling and analysis.
- Data Frames Meta - Metaprogramming tools for DataFrames.
- Julia Data - library for working with tabular data in Julia. [Deprecated]
- Data Read - Read files from Stata, SAS, and SPSS.
- Hypothesis Tests - Hypothesis tests for Julia.
- Gadfly - Crafty statistical graphics for Julia.
- Stats - Statistical tests for Julia.
- RDataSets - Julia package for loading many of the data sets available in R.
- DataFrames - library for working with tabular data in Julia.
- Distributions - A Julia package for probability distributions and associated functions.
- Data Arrays - Data structures that allow missing values. [Deprecated]
- Time Series - Time series toolkit for Julia.
- Sampling - Basic sampling algorithms for Julia.
Misc Stuff / Presentations
- DSP - Digital Signal Processing (filtering, periodograms, spectrograms, window functions).
- JuliaCon Presentations - Presentations for JuliaCon.
- SignalProcessing - Signal Processing tools for Julia.
- Images - An image library for Julia.
- DataDeps - Reproducible data setup for reproducible science.
Kotlin
Deep Learning
- KotlinDL - Deep learning framework written in Kotlin.
Lua
General-Purpose Machine Learning
- Torch7
- cephes - Cephes mathematical functions library, wrapped for Torch. Provides and wraps the 180+ special mathematical functions from the Cephes mathematical library, developed by Stephen L. Moshier. It is used, among many other places, at the heart of SciPy. [Deprecated]
- autograd - Autograd automatically differentiates native Torch code. Inspired by the original Python version.
- graph - Graph package for Torch. [Deprecated]
- randomkit - Numpy's randomkit, wrapped for Torch. [Deprecated]
- signal - A signal processing toolbox for Torch-7. FFT, DCT, Hilbert, cepstrums, stft.
- nn - Neural Network package for Torch.
- torchnet - framework for torch which provides a set of abstractions aiming at encouraging code re-use as well as encouraging modular programming.
- nngraph - This package provides graphical computation for nn library in Torch7.
- nnx - A completely unstable and experimental package that extends Torch's builtin nn library.
- rnn - A Recurrent Neural Network library that extends Torch's nn. RNNs, LSTMs, GRUs, BRNNs, BLSTMs, etc.
- dpnn - Many useful features that aren't part of the main nn package.
- dp - A deep learning library designed for streamlining research and development using the Torch7 distribution. It emphasizes flexibility through the elegant use of object-oriented design patterns. [Deprecated]
- optim - An optimization library for Torch. SGD, Adagrad, Conjugate-Gradient, LBFGS, RProp and more.
- unsup - A package for unsupervised learning in Torch. Provides modules that are compatible with nn (LinearPsd, ConvPsd, AutoEncoder, ...), and self-contained algorithms (k-means, PCA). [Deprecated]
- manifold - A package to manipulate manifolds.
- svm - Torch-SVM library. [Deprecated]
- lbfgs - FFI Wrapper for liblbfgs. [Deprecated]
- vowpalwabbit - An old vowpalwabbit interface to torch. [Deprecated]
- OpenGM - OpenGM is a C++ library for graphical modeling, and inference. The Lua bindings provide a simple way of describing graphs, from Lua, and then optimizing them with OpenGM. [Deprecated]
- spaghetti - Spaghetti (sparse linear) module for torch7 by @MichaelMathieu [Deprecated]
- LuaSHKit - A lua wrapper around the Locality sensitive hashing library SHKit [Deprecated]
- kernel smoothing - KNN, kernel-weighted average, local linear regression smoothers. [Deprecated]
- cutorch - Torch CUDA Implementation.
- cunn - Torch CUDA Neural Network Implementation.
- imgraph - An image/graph library for Torch. This package provides routines to construct graphs on images, segment them, build trees out of them, and convert them back to images. [Deprecated]
- videograph - A video/graph library for Torch. This package provides routines to construct graphs on videos, segment them, build trees out of them, and convert them back to videos. [Deprecated]
- saliency - code and tools around integral images. A library for finding interest points based on fast integral histograms. [Deprecated]
- stitch - allows us to use hugin to stitch images and apply same stitching to a video sequence. [Deprecated]
- sfm - A bundle adjustment/structure from motion package. [Deprecated]
- fex - A package for feature extraction in Torch. Provides SIFT and dSIFT modules. [Deprecated]
- OverFeat - A state-of-the-art generic dense feature extractor. [Deprecated]
- wav2letter - a simple and efficient end-to-end Automatic Speech Recognition (ASR) system from Facebook AI Research.
- Numeric Lua
- Lunatic Python
- SciLua
- Lua - Numerical Algorithms [Deprecated]
- Lunum [Deprecated]
Demos and Scripts
- Core torch7 demos repository.
- linear-regression, logistic-regression
- face detector (training and detection as separate demos)
- mst-based-segmenter
- train-a-digit-classifier
- train-autoencoder
- optical flow demo
- train-on-housenumbers
- train-on-cifar
- tracking with deep nets
- kinect demo
- filter-bank visualization
- saliency-networks
- Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo)
- torch-datasets - Scripts to load several popular datasets including:
- BSR 500
- CIFAR-10
- COIL
- Street View House Numbers
- MNIST
- NORB
- Atari2600 - Scripts to generate a dataset with static frames from the Arcade Learning Environment.
Matlab
Computer Vision
- Contourlets - MATLAB source code that implements the contourlet transform and its utility functions.
- Shearlets - MATLAB code for shearlet transform.
- Curvelets - The Curvelet transform is a higher dimensional generalization of the Wavelet transform designed to represent images at different scales and different angles.
- Bandlets - MATLAB code for bandlet transform.
- mexopencv - Collection and a development kit of MATLAB mex functions for OpenCV library.
Natural Language Processing
- NLP - A NLP library for Matlab.
General-Purpose Machine Learning
- Training a deep autoencoder or a classifier on MNIST digits - Training a deep autoencoder or a classifier on MNIST digits[DEEP LEARNING].
- Convolutional-Recursive Deep Learning for 3D Object Classification - Convolutional-Recursive Deep Learning for 3D Object Classification[DEEP LEARNING].
- Spider - The spider is intended to be a complete object orientated environment for machine learning in Matlab.
- LibSVM - A Library for Support Vector Machines.
- ThunderSVM - An Open-Source SVM Library on GPUs and CPUs
- LibLinear - A Library for Large Linear Classification.
- Machine Learning Module - Class on machine w/ PDF, lectures, code
- Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
- Pattern Recognition Toolbox - A complete object-oriented environment for machine learning in Matlab.
- Pattern Recognition and Machine Learning - This package contains the matlab implementation of the algorithms described in the book Pattern Recognition and Machine Learning by C. Bishop.
- Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly with MATLAB.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- Machine Learning in MatLab/Octave - examples of popular machine learning algorithms (neural networks, linear/logistic regressions, K-Means, etc.) with code examples and mathematics behind them being explained.
Data Analysis / Data Visualization
- ParaMonte - A general-purpose MATLAB library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
- matlab_bgl - MatlabBGL is a Matlab package for working with graphs.
- gaimc - Efficient pure-Matlab implementations of graph algorithms to complement MatlabBGL's mex functions.
.NET
Computer Vision
- OpenCVDotNet - A wrapper for the OpenCV project to be used with .NET applications.
- Emgu CV - Cross platform wrapper of OpenCV which can be compiled in Mono to be run on Windows, Linus, Mac OS X, iOS, and Android.
- AForge.NET - Open source C# framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence. Development has now shifted to GitHub.
- Accord.NET - Together with AForge.NET, this library can provide image processing and computer vision algorithms to Windows, Windows RT and Windows Phone. Some components are also available for Java and Android.
Natural Language Processing
- Stanford.NLP for .NET - A full port of Stanford NLP packages to .NET and also available precompiled as a NuGet package.
General-Purpose Machine Learning
- Accord-Framework -The Accord.NET Framework is a complete framework for building machine learning, computer vision, computer audition, signal processing and statistical applications.
- Accord.MachineLearning - Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as Ransac, Cross-validation and Grid-Search for machine-learning applications. This package is part of the Accord.NET Framework.
- DiffSharp - An automatic differentiation (AD) library providing exact and efficient derivatives (gradients, Hessians, Jacobians, directional derivatives, and matrix-free Hessian- and Jacobian-vector products) for machine learning and optimization applications. Operations can be nested to any level, meaning that you can compute exact higher-order derivatives and differentiate functions that are internally making use of differentiation, for applications such as hyperparameter optimization.
- Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
- GeneticSharp - Multi-platform genetic algorithm library for .NET Core and .NET Framework. The library has several implementations of GA operators, like: selection, crossover, mutation, reinsertion and termination.
- Infer.NET - Infer.NET is a framework for running Bayesian inference in graphical models. One can use Infer.NET to solve many different kinds of machine learning problems, from standard problems like classification, recommendation or clustering through to customized solutions to domain-specific problems. Infer.NET has been used in a wide variety of domains including information retrieval, bioinformatics, epidemiology, vision, and many others.
- ML.NET - ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers. ML.NET was originally developed in Microsoft Research and evolved into a significant framework over the last decade and is used across many product groups in Microsoft like Windows, Bing, PowerPoint, Excel and more.
- Neural Network Designer - DBMS management system and designer for neural networks. The designer application is developed using WPF, and is a user interface which allows you to design your neural network, query the network, create and configure chat bots that are capable of asking questions and learning from your feedback. The chat bots can even scrape the internet for information to return in their output as well as to use for learning.
- Synapses - Neural network library in F#.
- Vulpes - Deep belief and deep learning implementation written in F# and leverages CUDA GPU execution with Alea.cuBase.
- MxNet.Sharp - .NET Standard bindings for Apache MxNet with Imperative, Symbolic and Gluon Interface for developing, training and deploying Machine Learning models in C#. https://mxnet.tech-quantum.com/
Data Analysis / Data Visualization
- numl - numl is a machine learning library intended to ease the use of using standard modeling techniques for both prediction and clustering.
- Math.NET Numerics - Numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and everyday use. Supports .Net 4.0, .Net 3.5 and Mono on Windows, Linux and Mac; Silverlight 5, WindowsPhone/SL 8, WindowsPhone 8.1 and Windows 8 with PCL Portable Profiles 47 and 344; Android/iOS with Xamarin.
- Sho - Sho is an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping. The environment includes powerful and efficient libraries for linear algebra as well as data visualization that can be used from any .NET language, as well as a feature-rich interactive shell for rapid development.
Objective C
General-Purpose Machine Learning
- YCML - A Machine Learning framework for Objective-C and Swift (OS X / iOS).
- MLPNeuralNet - Fast multilayer perceptron neural network library for iOS and Mac OS X. MLPNeuralNet predicts new examples by trained neural networks. It is built on top of the Apple's Accelerate Framework, using vectorized operations and hardware acceleration if available. [Deprecated]
- MAChineLearning - An Objective-C multilayer perceptron library, with full support for training through backpropagation. Implemented using vDSP and vecLib, it's 20 times faster than its Java equivalent. Includes sample code for use from Swift.
- BPN-NeuralNetwork - It implemented 3 layers of neural networks ( Input Layer, Hidden Layer and Output Layer ) and it was named Back Propagation Neural Networks (BPN). This network can be used in products recommendation, user behavior analysis, data mining and data analysis. [Deprecated]
- Multi-Perceptron-NeuralNetwork - it implemented multi-perceptrons neural network (ニューラルネットワーク) based on Back Propagation Neural Networks (BPN) and designed unlimited-hidden-layers.
- KRHebbian-Algorithm - It is a non-supervisor and self-learning algorithm (adjust the weights) in the neural network of Machine Learning. [Deprecated]
- KRKmeans-Algorithm - It implemented K-Means clustering and classification algorithm. It could be used in data mining and image compression. [Deprecated]
- KRFuzzyCMeans-Algorithm - It implemented Fuzzy C-Means (FCM) the fuzzy clustering / classification algorithm on Machine Learning. It could be used in data mining and image compression. [Deprecated]
OCaml
General-Purpose Machine Learning
- Oml - A general statistics and machine learning library.
- GPR - Efficient Gaussian Process Regression in OCaml.
- Libra-Tk - Algorithms for learning and inference with discrete probabilistic models.
- TensorFlow - OCaml bindings for TensorFlow.
Perl
Data Analysis / Data Visualization
- Perl Data Language, a pluggable architecture for data and image processing, which can be used for machine learning.
General-Purpose Machine Learning
- MXnet for Deep Learning, in Perl, also released in CPAN.
- Perl Data Language, using AWS machine learning platform from Perl.
- Algorithm::SVMLight, implementation of Support Vector Machines with SVMLight under it. [Deprecated]
- Several machine learning and artificial intelligence models are
included in the
AInamespace. For instance, you can find Naïve Bayes.
Perl 6
Data Analysis / Data Visualization
- Perl Data Language, a pluggable architecture for data and image processing, which can be used for machine learning.
General-Purpose Machine Learning
PHP
Natural Language Processing
- jieba-php - Chinese Words Segmentation Utilities.
General-Purpose Machine Learning
- PHP-ML - Machine Learning library for PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feature Extraction and much more in one library.
- PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
- Rubix ML - A high-level machine learning (ML) library that lets you build programs that learn from data using the PHP language.
- 19 Questions - A machine learning / bayesian inference assigning attributes to objects.
Python
Computer Vision
- Scikit-Image - A collection of algorithms for image processing in Python.
- Scikit-Opt - Swarm Intelligence in Python (Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Algorithm, Immune Algorithm,Artificial Fish Swarm Algorithm in Python)
- SimpleCV - An open source computer vision framework that gives access to several high-powered computer vision libraries, such as OpenCV. Written on Python and runs on Mac, Windows, and Ubuntu Linux.
- Vigranumpy - Python bindings for the VIGRA C++ computer vision library.
- OpenFace - Free and open source face recognition with deep neural networks.
- PCV - Open source Python module for computer vision. [Deprecated]
- face_recognition - Face recognition library that recognizes and manipulates faces from Python or from the command line.
- deepface - A lightweight face recognition and facial attribute analysis (age, gender, emotion and race) framework for Python covering cutting-edge models such as VGG-Face, FaceNet, OpenFace, DeepFace, DeepID, Dlib and ArcFace.
- retinaface - deep learning based cutting-edge facial detector for Python coming with facial landmarks
- dockerface - Easy to install and use deep learning Faster R-CNN face detection for images and video in a docker container. [Deprecated]
- Detectron - FAIR's software system that implements state-of-the-art object detection algorithms, including Mask R-CNN. It is written in Python and powered by the Caffe2 deep learning framework. [Deprecated]
- detectron2 - FAIR's next-generation research platform for object detection and segmentation. It is a ground-up rewrite of the previous version, Detectron, and is powered by the PyTorch deep learning framework.
- albumentations - А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops.
- pytessarct - Python-tesseract is an optical character recognition (OCR) tool for python. That is, it will recognize and "read" the text embedded in images. Python-tesseract is a wrapper for Google's Tesseract-OCR Engine.
- imutils - A library containing Convenience functions to make basic image processing operations such as translation, rotation, resizing, skeletonization, and displaying Matplotlib images easier with OpenCV and Python.
- PyTorchCV - A PyTorch-Based Framework for Deep Learning in Computer Vision.
- Self-supervised learning
- neural-style-pt - A PyTorch implementation of Justin Johnson's neural-style (neural style transfer).
- Detecto - Train and run a computer vision model with 5-10 lines of code.
- neural-dream - A PyTorch implementation of DeepDream.
- Openpose - A real-time multi-person keypoint detection library for body, face, hands, and foot estimation
- Deep High-Resolution-Net - A PyTorch implementation of CVPR2019 paper "Deep High-Resolution Representation Learning for Human Pose Estimation"
- dream-creator - A PyTorch implementation of DeepDream. Allows individuals to quickly and easily train their own custom GoogleNet models with custom datasets for DeepDream.
- Lucent - Tensorflow and OpenAI Clarity's Lucid adapted for PyTorch.
- lightly - Lightly is a computer vision framework for self-supervised learning.
- Learnergy - Energy-based machine learning models built upon PyTorch.
- OpenVisionAPI - Open source computer vision API based on open source models.
- IoT Owl - Light face detection and recognition system with huge possibilities, based on Microsoft Face API and TensorFlow made for small IoT devices like raspberry pi.
- Exadel CompreFace - face recognition system that can be easily integrated into any system without prior machine learning skills. CompreFace provides REST API for face recognition, face verification, face detection, face mask detection, landmark detection, age, and gender recognition and is easily deployed with docker.
- computer-vision-in-action - as known as
L0CV, is a new generation of computer vision open source online learning media, a cross-platform interactive learning framework integrating graphics, source code and HTML. the L0CV ecosystem — Notebook, Datasets, Source Code, and from Diving-in to Advanced — as well as the L0CV Hub.
Natural Language Processing
- pkuseg-python - A better version of Jieba, developed by Peking University.
- NLTK - A leading platform for building Python programs to work with human language data.
- Pattern - A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
- Quepy - A python framework to transform natural language questions to queries in a database query language.
- TextBlob - Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
- YAlign - A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora. [Deprecated]
- jieba - Chinese Words Segmentation Utilities.
- SnowNLP - A library for processing Chinese text.
- spammy - A library for email Spam filtering built on top of nltk
- loso - Another Chinese segmentation library. [Deprecated]
- genius - A Chinese segment based on Conditional Random Field.
- KoNLPy - A Python package for Korean natural language processing.
- nut - Natural language Understanding Toolkit. [Deprecated]
- Rosetta - Text processing tools and wrappers (e.g. Vowpal Wabbit)
- BLLIP Parser - Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser). [Deprecated]
- PyNLPl - Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
- PySS3 - Python package that implements a novel white-box machine learning model for text classification, called SS3. Since SS3 has the ability to visually explain its rationale, this package also comes with easy-to-use interactive visualizations tools (online demos).
- python-ucto - Python binding to ucto (a unicode-aware rule-based tokenizer for various languages).
- python-frog - Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
- python-zpar - Python bindings for ZPar, a statistical part-of-speech-tagger, constituency parser, and dependency parser for English.
- colibri-core - Python binding to C++ library for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
- spaCy - Industrial strength NLP with Python and Cython.
- PyStanfordDependencies - Python interface for converting Penn Treebank trees to Stanford Dependencies.
- Distance - Levenshtein and Hamming distance computation. [Deprecated]
- Fuzzy Wuzzy - Fuzzy String Matching in Python.
- jellyfish - a python library for doing approximate and phonetic matching of strings.
- editdistance - fast implementation of edit distance.
- textacy - higher-level NLP built on Spacy.
- stanford-corenlp-python - Python wrapper for Stanford CoreNLP [Deprecated]
- CLTK - The Classical Language Toolkit.
- Rasa - A "machine learning framework to automate text-and voice-based conversations."
- yase - Transcode sentence (or other sequence) to list of word vector .
- Polyglot - Multilingual text (NLP) processing toolkit.
- DrQA - Reading Wikipedia to answer open-domain questions.
- Dedupe - A python library for accurate and scalable fuzzy matching, record deduplication and entity-resolution.
- Snips NLU - Natural Language Understanding library for intent classification and entity extraction
- NeuroNER - Named-entity recognition using neural networks providing state-of-the-art-results
- DeepPavlov - conversational AI library with many pre-trained Russian NLP models.
- BigARTM - topic modelling platform.
- NALP - A Natural Adversarial Language Processing framework built over Tensorflow.
- DL Translate - A deep learning-based translation library between 50 languages, built with
transformers.
General-Purpose Machine Learning
- RexMex -> A general purpose recommender metrics library for fair evaluation.
- ChemicalX -> A PyTorch based deep learning library for drug pair scoring
- Microsoft ML for Apache Spark -> A distributed machine learning framework Apache Spark
- Shapley -> A data-driven framework to quantify the value of classifiers in a machine learning ensemble.
- igel -> A delightful machine learning tool that allows you to train/fit, test and use models without writing code
- ML Model building -> A Repository Containing Classification, Clustering, Regression, Recommender Notebooks with illustration to make them.
- ML/DL project template
- PyTorch Geometric Temporal -> A temporal extension of PyTorch Geometric for dynamic graph representation learning.
- Little Ball of Fur -> A graph sampling extension library for NetworkX with a Scikit-Learn like API.
- Karate Club -> An unsupervised machine learning extension library for NetworkX with a Scikit-Learn like API.
- Auto_ViML -> Automatically Build Variant Interpretable ML models fast! Auto_ViML is pronounced "auto vimal", is a comprehensive and scalable Python AutoML toolkit with imbalanced handling, ensembling, stacking and built-in feature selection. Featured in Medium article.
- PyOD -> Python Outlier Detection, comprehensive and scalable Python toolkit for detecting outlying objects in multivariate data. Featured for Advanced models, including Neural Networks/Deep Learning and Outlier Ensembles.
- steppy -> Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces a very simple interface that enables clean machine learning pipeline design.
- steppy-toolkit -> Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective.
- CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. Documentation can be found here.
- Couler - Unified interface for constructing and managing machine learning workflows on different workflow engines, such as Argo Workflows, Tekton Pipelines, and Apache Airflow.
- auto_ml - Automated machine learning for production and analytics. Lets you focus on the fun parts of ML, while outputting production-ready code, and detailed analytics of your dataset and results. Includes support for NLP, XGBoost, CatBoost, LightGBM, and soon, deep learning.
- dtaidistance - High performance library for time series distances (DTW) and time series clustering.
- machine learning - automated build consisting of a web-interface, and set of programmatic-interface API, for support vector machines. Corresponding dataset(s) are stored into a SQL database, then generated model(s) used for prediction(s), are stored into a NoSQL datastore.
- XGBoost - Python bindings for eXtreme Gradient Boosting (Tree) Library.
- ChefBoost - a lightweight decision tree framework for Python with categorical feature support covering regular decision tree algorithms such as ID3, C4.5, CART, CHAID and regression tree; also some advanved bagging and boosting techniques such as gradient boosting, random forest and adaboost.
- Apache SINGA - An Apache Incubating project for developing an open source machine learning library.
- Bayesian Methods for Hackers - Book/iPython notebooks on Probabilistic Programming in Python.
- Featureforge A set of tools for creating and testing machine learning features, with a scikit-learn compatible API.
- MLlib in Apache Spark - Distributed machine learning library in Spark
- Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
- scikit-learn - A Python module for machine learning built on top of SciPy.
- metric-learn - A Python module for metric learning.
- Intel(R) Extension for Scikit-learn - A seamless way to speed up your Scikit-learn applications with no accuracy loss and code changes.
- SimpleAI Python implementation of many of the artificial intelligence algorithms described in the book "Artificial Intelligence, a Modern Approach". It focuses on providing an easy to use, well documented and tested library.
- astroML - Machine Learning and Data Mining for Astronomy.
- graphlab-create - A library with various machine learning models (regression, clustering, recommender systems, graph analytics, etc.) implemented on top of a disk-backed DataFrame.
- BigML - A library that contacts external servers.
- pattern - Web mining module for Python.
- NuPIC - Numenta Platform for Intelligent Computing.
- Pylearn2 - A Machine Learning library based on Theano. [Deprecated]
- keras - High-level neural networks frontend for TensorFlow, CNTK and Theano.
- Lasagne - Lightweight library to build and train neural networks in Theano.
- hebel - GPU-Accelerated Deep Learning Library in Python. [Deprecated]
- Chainer - Flexible neural network framework.
- prophet - Fast and automated time series forecasting framework by Facebook.
- gensim - Topic Modelling for Humans.
- topik - Topic modelling toolkit. [Deprecated]
- PyBrain - Another Python Machine Learning Library.
- Brainstorm - Fast, flexible and fun neural networks. This is the successor of PyBrain.
- Surprise - A scikit for building and analyzing recommender systems.
- implicit - Fast Python Collaborative Filtering for Implicit Datasets.
- LightFM - A Python implementation of a number of popular recommendation algorithms for both implicit and explicit feedback.
- Crab - A flexible, fast recommender engine. [Deprecated]
- python-recsys - A Python library for implementing a Recommender System.
- thinking bayes - Book on Bayesian Analysis.
- Image-to-Image Translation with Conditional Adversarial Networks - Implementation of image to image (pix2pix) translation from the paper by isola et al.[DEEP LEARNING]
- Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
- Bolt - Bolt Online Learning Toolbox. [Deprecated]
- CoverTree - Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree [Deprecated]
- nilearn - Machine learning for NeuroImaging in Python.
- neuropredict - Aimed at novice machine learners and non-expert programmers, this package offers easy (no coding needed) and comprehensive machine learning (evaluation and full report of predictive performance WITHOUT requiring you to code) in Python for NeuroImaging and any other type of features. This is aimed at absorbing much of the ML workflow, unlike other packages like nilearn and pymvpa, which require you to learn their API and code to produce anything useful.
- imbalanced-learn - Python module to perform under sampling and oversampling with various techniques.
- imbalanced-ensemble - Python toolbox for quick implementation, modification, evaluation, and visualization of ensemble learning algorithms for class-imbalanced data. Supports out-of-the-box multi-class imbalanced (long-tailed) classification.
- Shogun - The Shogun Machine Learning Toolbox.
- Pyevolve - Genetic algorithm framework. [Deprecated]
- Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
- breze - Theano based library for deep and recurrent neural networks.
- Cortex - Open source platform for deploying machine learning models in production.
- pyhsmm - library for approximate unsupervised inference in Bayesian Hidden Markov Models (HMMs) and explicit-duration Hidden semi-Markov Models (HSMMs), focusing on the Bayesian Nonparametric extensions, the HDP-HMM and HDP-HSMM, mostly with weak-limit approximations.
- SKLL - A wrapper around scikit-learn that makes it simpler to conduct experiments.
- neurolab
- Spearmint - Spearmint is a package to perform Bayesian optimization according to the algorithms outlined in the paper: Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle and Ryan P. Adams. Advances in Neural Information Processing Systems, 2012. [Deprecated]
- Pebl - Python Environment for Bayesian Learning. [Deprecated]
- Theano - Optimizing GPU-meta-programming code generating array oriented optimizing math compiler in Python.
- TensorFlow - Open source software library for numerical computation using data flow graphs.
- pomegranate - Hidden Markov Models for Python, implemented in Cython for speed and efficiency.
- python-timbl - A Python extension module wrapping the full TiMBL C++ programming interface. Timbl is an elaborate k-Nearest Neighbours machine learning toolkit.
- deap - Evolutionary algorithm framework.
- pydeep - Deep Learning In Python. [Deprecated]
- mlxtend - A library consisting of useful tools for data science and machine learning tasks.
- neon - Nervana's high-performance Python-based Deep Learning framework [DEEP LEARNING]. [Deprecated]
- Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search.
- Neural Networks and Deep Learning - Code samples for my book "Neural Networks and Deep Learning" [DEEP LEARNING].
- Annoy - Approximate nearest neighbours implementation.
- TPOT - Tool that automatically creates and optimizes machine learning pipelines using genetic programming. Consider it your personal data science assistant, automating a tedious part of machine learning.
- pgmpy A python library for working with Probabilistic Graphical Models.
- DIGITS - The Deep Learning GPU Training System (DIGITS) is a web application for training deep learning models.
- Orange - Open source data visualization and data analysis for novices and experts.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- milk - Machine learning toolkit focused on supervised classification. [Deprecated]
- TFLearn - Deep learning library featuring a higher-level API for TensorFlow.
- REP - an IPython-based environment for conducting data-driven research in a consistent and reproducible way. REP is not trying to substitute scikit-learn, but extends it and provides better user experience. [Deprecated]
- rgf_python - Python bindings for Regularized Greedy Forest (Tree) Library.
- skbayes - Python package for Bayesian Machine Learning with scikit-learn API.
- fuku-ml - Simple machine learning library, including Perceptron, Regression, Support Vector Machine, Decision Tree and more, it's easy to use and easy to learn for beginners.
- Xcessiv - A web-based application for quick, scalable, and automated hyperparameter tuning and stacked ensembling.
- PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
- PyTorch Lightning - The lightweight PyTorch wrapper for high-performance AI research.
- PyTorch Lightning Bolts - Toolbox of models, callbacks, and datasets for AI/ML researchers.
- skorch - A scikit-learn compatible neural network library that wraps PyTorch.
- ML-From-Scratch - Implementations of Machine Learning models from scratch in Python with a focus on transparency. Aims to showcase the nuts and bolts of ML in an accessible way.
- Edward - A library for probabilistic modeling, inference, and criticism. Built on top of TensorFlow.
- xRBM - A library for Restricted Boltzmann Machine (RBM) and its conditional variants in Tensorflow.
- CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, well documented and supports CPU and GPU (even multi-GPU) computation.
- stacked_generalization - Implementation of machine learning stacking technique as a handy library in Python.
- modAL - A modular active learning framework for Python, built on top of scikit-learn.
- Cogitare: A Modern, Fast, and Modular Deep Learning and Machine Learning framework for Python.
- Parris - Parris, the automated infrastructure setup tool for machine learning algorithms.
- neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.
- Turi Create - Machine learning from Apple. Turi Create simplifies the development of custom machine learning models. You don't have to be a machine learning expert to add recommendations, object detection, image classification, image similarity or activity classification to your app.
- xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertisement and recommender systems.
- mlens - A high performance, memory efficient, maximally parallelized ensemble learning, integrated with scikit-learn.
- Thampi - Machine Learning Prediction System on AWS Lambda
- MindsDB - Open Source framework to streamline use of neural networks.
- Microsoft Recommenders: Examples and best practices for building recommendation systems, provided as Jupyter notebooks. The repo contains some of the latest state of the art algorithms from Microsoft Research as well as from other companies and institutions.
- StellarGraph: Machine Learning on Graphs, a Python library for machine learning on graph-structured (network-structured) data.
- BentoML: Toolkit for package and deploy machine learning models for serving in production
- MiraiML: An asynchronous engine for continuous & autonomous machine learning, built for real-time usage.
- numpy-ML: Reference implementations of ML models written in numpy
- Neuraxle: A framework providing the right abstractions to ease research, development, and deployment of your ML pipelines.
- Cornac - A comparative framework for multimodal recommender systems with a focus on models leveraging auxiliary data.
- JAX - JAX is Autograd and XLA, brought together for high-performance machine learning research.
- Catalyst - High-level utils for PyTorch DL & RL research. It was developed with a focus on reproducibility, fast experimentation and code/ideas reusing. Being able to research/develop something new, rather than write another regular train loop.
- Fastai - High-level wrapper built on the top of Pytorch which supports vision, text, tabular data and collaborative filtering.
- scikit-multiflow - A machine learning framework for multi-output/multi-label and stream data.
- Lightwood - A Pytorch based framework that breaks down machine learning problems into smaller blocks that can be glued together seamlessly with objective to build predictive models with one line of code.
- bayeso - A simple, but essential Bayesian optimization package, written in Python.
- mljar-supervised - An Automated Machine Learning (AutoML) python package for tabular data. It can handle: Binary Classification, MultiClass Classification and Regression. It provides explanations and markdown reports.
- evostra - A fast Evolution Strategy implementation in Python.
- Determined - Scalable deep learning training platform, including integrated support for distributed training, hyperparameter tuning, experiment tracking, and model management.
- PySyft - A Python library for secure and private Deep Learning built on PyTorch and TensorFlow.
- PyGrid - Peer-to-peer network of data owners and data scientists who can collectively train AI models using PySyft
- sktime - A unified framework for machine learning with time series
- OPFython - A Python-inspired implementation of the Optimum-Path Forest classifier.
- Opytimizer - Python-based meta-heuristic optimization techniques.
- Gradio - A Python library for quickly creating and sharing demos of models. Debug models interactively in your browser, get feedback from collaborators, and generate public links without deploying anything.
- Hub - Fastest unstructured dataset management for TensorFlow/PyTorch. Stream & version-control data. Store even petabyte-scale data in a single numpy-like array on the cloud accessible on any machine. Visit activeloop.ai for more info.
- Synthia - Multidimensional synthetic data generation in Python.
- ByteHub - An easy-to-use, Python-based feature store. Optimized for time-series data.
- Backprop - Backprop makes it simple to use, finetune, and deploy state-of-the-art ML models.
- River: A framework for general purpose online machine learning.
- FEDOT: An AutoML framework for the automated design of composite modeling pipelines. It can handle classification, regression, and time series forecasting tasks on different types of data (including multi-modal datasets).
- Sklearn-genetic-opt: An AutoML package for hyperparameters tuning using evolutionary algorithms, with built-in callbacks, plotting, remote logging and more.
- Evidently: Interactive reports to analyze machine learning models during validation or production monitoring.
- Streamlit: Streamlit is an framework to create beautiful data apps in hours, not weeks.
- Optuna: Optuna is an automatic hyperparameter optimization software framework, particularly designed for machine learning.
- Deepchecks: Validation & testing of machine learning models and data during model development, deployment, and production. This includes checks and suites related to various types of issues, such as model performance, data integrity, distribution mismatches, and more.
Data Analysis / Data Visualization
- DataVisualization - A Github Repository Where you can Learn Datavisualizatoin Basics to Intermediate level.
- Cartopy - Cartopy is a Python package designed for geospatial data processing in order to produce maps and other geospatial data analyses.
- SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
- NumPy - A fundamental package for scientific computing with Python.
- AutoViz AutoViz performs automatic visualization of any dataset with a single line of Python code. Give it any input file (CSV, txt or json) of any size and AutoViz will visualize it. See Medium article.
- Numba - Python JIT (just in time) compiler to LLVM aimed at scientific Python by the developers of Cython and NumPy.
- Mars - A tensor-based framework for large-scale data computation which is often regarded as a parallel and distributed version of NumPy.
- NetworkX - A high-productivity software for complex networks.
- igraph - binding to igraph library - General purpose graph library.
- Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
- ParaMonte - A general-purpose Python library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
- Vaex - A high performance Python library for lazy Out-of-Core DataFrames (similar to Pandas), to visualize and explore big tabular datasets. Documentation can be found here.
- Open Mining - Business Intelligence (BI) in Python (Pandas web interface) [Deprecated]
- PyMC - Markov Chain Monte Carlo sampling toolkit.
- zipline - A Pythonic algorithmic trading library.
- PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
- SymPy - A Python library for symbolic mathematics.
- statsmodels - Statistical modeling and econometrics in Python.
- astropy - A community Python library for Astronomy.
- matplotlib - A Python 2D plotting library.
- bokeh - Interactive Web Plotting for Python.
- plotly - Collaborative web plotting for Python and matplotlib.
- altair - A Python to Vega translator.
- d3py - A plotting library for Python, based on D3.js.
- PyDexter - Simple plotting for Python. Wrapper for D3xterjs; easily render charts in-browser.
- ggplot - Same API as ggplot2 for R. [Deprecated]
- ggfortify - Unified interface to ggplot2 popular R packages.
- Kartograph.py - Rendering beautiful SVG maps in Python.
- pygal - A Python SVG Charts Creator.
- PyQtGraph - A pure-python graphics and GUI library built on PyQt4 / PySide and NumPy.
- pycascading [Deprecated]
- Petrel - Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python.
- Blaze - NumPy and Pandas interface to Big Data.
- emcee - The Python ensemble sampling toolkit for affine-invariant MCMC.
- windML - A Python Framework for Wind Energy Analysis and Prediction.
- vispy - GPU-based high-performance interactive OpenGL 2D/3D data visualization library.
- cerebro2 A web-based visualization and debugging platform for NuPIC. [Deprecated]
- NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool! [Deprecated]
- SparklingPandas Pandas on PySpark (POPS).
- Seaborn - A python visualization library based on matplotlib.
- ipychart - The power of Chart.js in Jupyter Notebook.
- bqplot - An API for plotting in Jupyter (IPython).
- pastalog - Simple, realtime visualization of neural network training performance.
- Superset - A data exploration platform designed to be visual, intuitive, and interactive.
- Dora - Tools for exploratory data analysis in Python.
- Ruffus - Computation Pipeline library for python.
- SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis).
- somoclu Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters, has python API.
- HDBScan - implementation of the hdbscan algorithm in Python - used for clustering
- visualize_ML - A python package for data exploration and data analysis. [Deprecated]
- scikit-plot - A visualization library for quick and easy generation of common plots in data analysis and machine learning.
- Bowtie - A dashboard library for interactive visualizations using flask socketio and react.
- lime - Lime is about explaining what machine learning classifiers (or models) are doing. It is able to explain any black box classifier, with two or more classes.
- PyCM - PyCM is a multi-class confusion matrix library written in Python that supports both input data vectors and direct matrix, and a proper tool for post-classification model evaluation that supports most classes and overall statistics parameters
- Dash - A framework for creating analytical web applications built on top of Plotly.js, React, and Flask
- Lambdo - A workflow engine for solving machine learning problems by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation via user-defined (Python) functions.
- TensorWatch - Debugging and visualization tool for machine learning and data science. It extensively leverages Jupyter Notebook to show real-time visualizations of data in running processes such as machine learning training.
- dowel - A little logger for machine learning research. Output any object to the terminal, CSV, TensorBoard, text logs on disk, and more with just one call to
logger.log().
Misc Scripts / iPython Notebooks / Codebases
- MiniGrad – A minimal, educational, Pythonic implementation of autograd (~100 loc).
- Map/Reduce implementations of common ML algorithms: Jupyter notebooks that cover how to implement from scratch different ML algorithms (ordinary least squares, gradient descent, k-means, alternating least squares), using Python NumPy, and how to then make these implementations scalable using Map/Reduce and Spark.
- BioPy - Biologically-Inspired and Machine Learning Algorithms in Python. [Deprecated]
- CAEs for Data Assimilation - Convolutional autoencoders for 3D image/field compression applied to reduced order Data Assimilation.
- handsonml - Fundamentals of machine learning in python.
- SVM Explorer - Interactive SVM Explorer, using Dash and scikit-learn
- pattern_classification
- thinking stats 2
- hyperopt
- numpic
- 2012-paper-diginorm
- A gallery of interesting IPython notebooks
- ipython-notebooks
- data-science-ipython-notebooks - Continually updated Data Science Python Notebooks: Spark, Hadoop MapReduce, HDFS, AWS, Kaggle, scikit-learn, matplotlib, pandas, NumPy, SciPy, and various command lines.
- decision-weights
- Sarah Palin LDA - Topic Modeling the Sarah Palin emails.
- Diffusion Segmentation - A collection of image segmentation algorithms based on diffusion methods.
- Scipy Tutorials - SciPy tutorials. This is outdated, check out scipy-lecture-notes.
- Crab - A recommendation engine library for Python.
- BayesPy - Bayesian Inference Tools in Python.
- scikit-learn tutorials - Series of notebooks for learning scikit-learn.
- sentiment-analyzer - Tweets Sentiment Analyzer
- sentiment_classifier - Sentiment classifier using word sense disambiguation.
- group-lasso - Some experiments with the coordinate descent algorithm used in the (Sparse) Group Lasso model.
- jProcessing - Kanji / Hiragana / Katakana to Romaji Converter. Edict Dictionary & parallel sentences Search. Sentence Similarity between two JP Sentences. Sentiment Analysis of Japanese Text. Run Cabocha(ISO--8859-1 configured) in Python.
- mne-python-notebooks - IPython notebooks for EEG/MEG data processing using mne-python.
- Neon Course - IPython notebooks for a complete course around understanding Nervana's Neon.
- pandas cookbook - Recipes for using Python's pandas library.
- climin - Optimization library focused on machine learning, pythonic implementations of gradient descent, LBFGS, rmsprop, adadelta and others.
- Allen Downey’s Data Science Course - Code for Data Science at Olin College, Spring 2014.
- Allen Downey’s Think Bayes Code - Code repository for Think Bayes.
- Allen Downey’s Think Complexity Code - Code for Allen Downey's book Think Complexity.
- Allen Downey’s Think OS Code - Text and supporting code for Think OS: A Brief Introduction to Operating Systems.
- Python Programming for the Humanities - Course for Python programming for the Humanities, assuming no prior knowledge. Heavy focus on text processing / NLP.
- GreatCircle - Library for calculating great circle distance.
- Optunity examples - Examples demonstrating how to use Optunity in synergy with machine learning libraries.
- Dive into Machine Learning with Python Jupyter notebook and scikit-learn - "I learned Python by hacking first, and getting serious later. I wanted to do this with Machine Learning. If this is your style, join me in getting a bit ahead of yourself."
- TDB - TensorDebugger (TDB) is a visual debugger for deep learning. It features interactive, node-by-node debugging and visualization for TensorFlow.
- Suiron - Machine Learning for RC Cars.
- Introduction to machine learning with scikit-learn - IPython notebooks from Data School's video tutorials on scikit-learn.
- Practical XGBoost in Python - comprehensive online course about using XGBoost in Python.
- Introduction to Machine Learning with Python - Notebooks and code for the book "Introduction to Machine Learning with Python"
- Pydata book - Materials and IPython notebooks for "Python for Data Analysis" by Wes McKinney, published by O'Reilly Media
- Homemade Machine Learning - Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained
- Prodmodel - Build tool for data science pipelines.
- the-elements-of-statistical-learning - This repository contains Jupyter notebooks implementing the algorithms found in the book and summary of the textbook.
- Hyperparameter-Optimization-of-Machine-Learning-Algorithms - Code for hyperparameter tuning/optimization of machine learning and deep learning algorithms.
- Heart_Disease-Prediction - Given clinical parameters about a patient, can we predict whether or not they have heart disease?
- Flight Fare Prediction - This basically to gauge the understanding of Machine Learning Workflow and Regression technique in specific.
- Keras Tuner - An easy-to-use, scalable hyperparameter optimization framework that solves the pain points of hyperparameter search.
Neural Networks
- nn_builder - nn_builder is a python package that lets you build neural networks in 1 line
- NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.
-
Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm.
-
NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences. [Deprecated]
- Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm. [Deprecated]
- Data Driven Code - Very simple implementation of neural networks for dummies in python without using any libraries, with detailed comments.
- Machine Learning, Data Science and Deep Learning with Python - LiveVideo course that covers machine learning, Tensorflow, artificial intelligence, and neural networks.
- TResNet: High Performance GPU-Dedicated Architecture - TResNet models were designed and optimized to give the best speed-accuracy tradeoff out there on GPUs.
- TResNet: Simple and powerful neural network library for python - Variety of supported types of Artificial Neural Network and learning algorithms.
- Jina AI An easier way to build neural search in the cloud. Compatible with Jupyter Notebooks.
- sequitur PyTorch library for creating and training sequence autoencoders in just two lines of code
Federated Learning
- Flower - A unified approach to federated learning, analytics, and evaluation. Federate any workload, any ML framework, and any programming language.
- PySyft - A Python library for secure and private Deep Learning.
- Tensorflow-Federated A federated learning framework for machine learning and other computations on decentralized data.
Kaggle Competition Source Code
- open-solution-home-credit -> source code and experiments results for Home Credit Default Risk.
- open-solution-googleai-object-detection -> source code and experiments results for Google AI Open Images - Object Detection Track.
- open-solution-salt-identification -> source code and experiments results for TGS Salt Identification Challenge.
- open-solution-ship-detection -> source code and experiments results for Airbus Ship Detection Challenge.
- open-solution-data-science-bowl-2018 -> source code and experiments results for 2018 Data Science Bowl.
- open-solution-value-prediction -> source code and experiments results for Santander Value Prediction Challenge.
- open-solution-toxic-comments -> source code for Toxic Comment Classification Challenge.
- wiki challenge - An implementation of Dell Zhang's solution to Wikipedia's Participation Challenge on Kaggle.
- kaggle insults - Kaggle Submission for "Detecting Insults in Social Commentary".
- kaggle_acquire-valued-shoppers-challenge - Code for the Kaggle acquire valued shoppers challenge.
- kaggle-cifar - Code for the CIFAR-10 competition at Kaggle, uses cuda-convnet.
- kaggle-blackbox - Deep learning made easy.
- kaggle-accelerometer - Code for Accelerometer Biometric Competition at Kaggle.
- kaggle-advertised-salaries - Predicting job salaries from ads - a Kaggle competition.
- kaggle amazon - Amazon access control challenge.
- kaggle-bestbuy_big - Code for the Best Buy competition at Kaggle.
- kaggle-bestbuy_small
- Kaggle Dogs vs. Cats - Code for Kaggle Dogs vs. Cats competition.
- Kaggle Galaxy Challenge - Winning solution for the Galaxy Challenge on Kaggle.
- Kaggle Gender - A Kaggle competition: discriminate gender based on handwriting.
- Kaggle Merck - Merck challenge at Kaggle.
- Kaggle Stackoverflow - Predicting closed questions on Stack Overflow.
- kaggle_acquire-valued-shoppers-challenge - Code for the Kaggle acquire valued shoppers challenge.
- wine-quality - Predicting wine quality.
Reinforcement Learning
- DeepMind Lab - DeepMind Lab is a 3D learning environment based on id Software's Quake III Arena via ioquake3 and other open source software. Its primary purpose is to act as a testbed for research in artificial intelligence, especially deep reinforcement learning.
- Gym - OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms.
- Serpent.AI - Serpent.AI is a game agent framework that allows you to turn any video game you own into a sandbox to develop AI and machine learning experiments. For both researchers and hobbyists.
- ViZDoom - ViZDoom allows developing AI bots that play Doom using only the visual information (the screen buffer). It is primarily intended for research in machine visual learning, and deep reinforcement learning, in particular.
- Roboschool - Open-source software for robot simulation, integrated with OpenAI Gym.
- Retro - Retro Games in Gym
- SLM Lab - Modular Deep Reinforcement Learning framework in PyTorch.
- Coach - Reinforcement Learning Coach by Intel® AI Lab enables easy experimentation with state of the art Reinforcement Learning algorithms
- garage - A toolkit for reproducible reinforcement learning research
- metaworld - An open source robotics benchmark for meta- and multi-task reinforcement learning
- acme - An Open Source Distributed Framework for Reinforcement Learning that makes build and train your agents easily.
- Spinning Up - An educational resource designed to let anyone learn to become a skilled practitioner in deep reinforcement learning
- Maze - Application-oriented deep reinforcement learning framework addressing real-world decision problems.
- RLlib - RLlib is an industry level, highly scalable RL library for tf and torch, based on Ray. It's used by companies like Amazon and Microsoft to solve real-world decision making problems at scale.
Ruby
Natural Language Processing
- Awesome NLP with Ruby - Curated link list for practical natural language processing in Ruby.
- Treat - Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby.
- Stemmer - Expose libstemmer_c to Ruby. [Deprecated]
- Raspell - raspell is an interface binding for ruby. [Deprecated]
- UEA Stemmer - Ruby port of UEALite Stemmer - a conservative stemmer for search and indexing.
- Twitter-text-rb - A library that does auto linking and extraction of usernames, lists and hashtags in tweets.
General-Purpose Machine Learning
- Awesome Machine Learning with Ruby - Curated list of ML related resources for Ruby.
- Ruby Machine Learning - Some Machine Learning algorithms, implemented in Ruby. [Deprecated]
- Machine Learning Ruby [Deprecated]
- jRuby Mahout - JRuby Mahout is a gem that unleashes the power of Apache Mahout in the world of JRuby. [Deprecated]
- CardMagic-Classifier - A general classifier module to allow Bayesian and other types of classifications.
- rb-libsvm - Ruby language bindings for LIBSVM which is a Library for Support Vector Machines.
- Scoruby - Creates Random Forest classifiers from PMML files.
- rumale - Rumale is a machine learning library in Ruby
Data Analysis / Data Visualization
- rsruby - Ruby - R bridge.
- data-visualization-ruby - Source code and supporting content for my Ruby Manor presentation on Data Visualisation with Ruby. [Deprecated]
- ruby-plot - gnuplot wrapper for Ruby, especially for plotting ROC curves into SVG files. [Deprecated]
- plot-rb - A plotting library in Ruby built on top of Vega and D3. [Deprecated]
- scruffy - A beautiful graphing toolkit for Ruby.
- SciRuby
- Glean - A data management tool for humans. [Deprecated]
- Bioruby
- Arel [Deprecated]
Misc
- Big Data For Chimps
- Listof - Community based data collection, packed in gem. Get list of pretty much anything (stop words, countries, non words) in txt, json or hash. Demo/Search for a list
Rust
General-Purpose Machine Learning
- smartcore - "The Most Advanced Machine Learning Library In Rust."
- linfa - a comprehensive toolkit to build Machine Learning applications with Rust
- deeplearn-rs - deeplearn-rs provides simple networks that use matrix multiplication, addition, and ReLU under the MIT license.
- rustlearn - a machine learning framework featuring logistic regression, support vector machines, decision trees and random forests.
- rusty-machine - a pure-rust machine learning library.
- leaf - open source framework for machine intelligence, sharing concepts from TensorFlow and Caffe. Available under the MIT license. [Deprecated]
- RustNN - RustNN is a feedforward neural network library. [Deprecated]
- RusticSOM - A Rust library for Self Organising Maps (SOM).
R
General-Purpose Machine Learning
- ahaz - ahaz: Regularization for semiparametric additive hazards regression. [Deprecated]
- arules - arules: Mining Association Rules and Frequent Itemsets
- biglasso - biglasso: Extending Lasso Model Fitting to Big Data in R.
- bmrm - bmrm: Bundle Methods for Regularized Risk Minimization Package.
- Boruta - Boruta: A wrapper algorithm for all-relevant feature selection.
- bst - bst: Gradient Boosting.
- C50 - C50: C5.0 Decision Trees and Rule-Based Models.
- caret - Classification and Regression Training: Unified interface to ~150 ML algorithms in R.
- caretEnsemble - caretEnsemble: Framework for fitting multiple caret models as well as creating ensembles of such models. [Deprecated]
- CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box for R.
- Clever Algorithms For Machine Learning
- CORElearn - CORElearn: Classification, regression, feature evaluation and ordinal evaluation.
- CoxBoost - CoxBoost: Cox models by likelihood based boosting for a single survival endpoint or competing risks [Deprecated]
- Cubist - Cubist: Rule- and Instance-Based Regression Modeling.
- e1071 - e1071: Misc Functions of the Department of Statistics (e1071), TU Wien
- earth - earth: Multivariate Adaptive Regression Spline Models
- elasticnet - elasticnet: Elastic-Net for Sparse Estimation and Sparse PCA.
- ElemStatLearn - ElemStatLearn: Data sets, functions and examples from the book: "The Elements of Statistical Learning, Data Mining, Inference, and Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman.
- evtree - evtree: Evolutionary Learning of Globally Optimal Trees.
- forecast - forecast: Timeseries forecasting using ARIMA, ETS, STLM, TBATS, and neural network models.
- forecastHybrid - forecastHybrid: Automatic ensemble and cross validation of ARIMA, ETS, STLM, TBATS, and neural network models from the "forecast" package.
- fpc - fpc: Flexible procedures for clustering.
- frbs - frbs: Fuzzy Rule-based Systems for Classification and Regression Tasks. [Deprecated]
- GAMBoost - GAMBoost: Generalized linear and additive models by likelihood based boosting. [Deprecated]
- gamboostLSS - gamboostLSS: Boosting Methods for GAMLSS.
- gbm - gbm: Generalized Boosted Regression Models.
- glmnet - glmnet: Lasso and elastic-net regularized generalized linear models.
- glmpath - glmpath: L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model.
- GMMBoost - GMMBoost: Likelihood-based Boosting for Generalized mixed models. [Deprecated]
- grplasso - grplasso: Fitting user specified models with Group Lasso penalty.
- grpreg - grpreg: Regularization paths for regression models with grouped covariates.
- h2o - A framework for fast, parallel, and distributed machine learning algorithms at scale -- Deeplearning, Random forests, GBM, KMeans, PCA, GLM.
- hda - hda: Heteroscedastic Discriminant Analysis. [Deprecated]
- Introduction to Statistical Learning
- ipred - ipred: Improved Predictors.
- kernlab - kernlab: Kernel-based Machine Learning Lab.
- klaR - klaR: Classification and visualization.
- L0Learn - L0Learn: Fast algorithms for best subset selection.
- lars - lars: Least Angle Regression, Lasso and Forward Stagewise. [Deprecated]
- lasso2 - lasso2: L1 constrained estimation aka ‘lasso’.
- LiblineaR - LiblineaR: Linear Predictive Models Based On The Liblinear C/C++ Library.
- LogicReg - LogicReg: Logic Regression.
- Machine Learning For Hackers
- maptree - maptree: Mapping, pruning, and graphing tree models. [Deprecated]
- mboost - mboost: Model-Based Boosting.
- medley - medley: Blending regression models, using a greedy stepwise approach.
- mlr - mlr: Machine Learning in R.
- ncvreg - ncvreg: Regularization paths for SCAD- and MCP-penalized regression models.
- nnet - nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models. [Deprecated]
- pamr - pamr: Pam: prediction analysis for microarrays. [Deprecated]
- party - party: A Laboratory for Recursive Partitioning
- partykit - partykit: A Toolkit for Recursive Partitioning.
- penalized - penalized: L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model.
- penalizedLDA - penalizedLDA: Penalized classification using Fisher's linear discriminant. [Deprecated]
- penalizedSVM - penalizedSVM: Feature Selection SVM using penalty functions.
- quantregForest - quantregForest: Quantile Regression Forests.
- randomForest - randomForest: Breiman and Cutler's random forests for classification and regression.
- randomForestSRC - randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC).
- rattle - rattle: Graphical user interface for data mining in R.
- rda - rda: Shrunken Centroids Regularized Discriminant Analysis.
- rdetools - rdetools: Relevant Dimension Estimation (RDE) in Feature Spaces. [Deprecated]
- REEMtree - REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data. [Deprecated]
- relaxo - relaxo: Relaxed Lasso. [Deprecated]
- rgenoud - rgenoud: R version of GENetic Optimization Using Derivatives
- Rmalschains - Rmalschains: Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R.
- rminer - rminer: Simpler use of data mining methods (e.g. NN and SVM) in classification and regression. [Deprecated]
- ROCR - ROCR: Visualizing the performance of scoring classifiers. [Deprecated]
- RoughSets - RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories. [Deprecated]
- rpart - rpart: Recursive Partitioning and Regression Trees.
- RPMM - RPMM: Recursively Partitioned Mixture Model.
- RSNNS - RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS).
- RWeka - RWeka: R/Weka interface.
- RXshrink - RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression.
- sda - sda: Shrinkage Discriminant Analysis and CAT Score Variable Selection. [Deprecated]
- spectralGraphTopology - spectralGraphTopology: Learning Graphs from Data via Spectral Constraints.
- SuperLearner - Multi-algorithm ensemble learning packages.
- svmpath - svmpath: svmpath: the SVM Path algorithm. [Deprecated]
- tgp - tgp: Bayesian treed Gaussian process models. [Deprecated]
- tree - tree: Classification and regression trees.
- varSelRF - varSelRF: Variable selection using random forests.
- XGBoost.R - R binding for eXtreme Gradient Boosting (Tree) Library.
- Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly to R.
- igraph - binding to igraph library - General purpose graph library.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- TDSP-Utilities - Two data science utilities in R from Microsoft: 1) Interactive Data Exploration, Analysis, and Reporting (IDEAR) ; 2) Automated Modeling and Reporting (AMR).
Data Manipulation | Data Analysis | Data Visualization
- dplyr - A data manipulation package that helps to solve the most common data manipulation problems.
- ggplot2 - A data visualization package based on the grammar of graphics.
- tmap for visualizing geospatial data with static maps and leaflet for interactive maps
- tm and quanteda are the main packages for managing, analyzing, and visualizing textual data.
- shiny is the basis for truly interactive displays and dashboards in R. However, some measure of interactivity can be achieved with htmlwidgets bringing javascript libraries to R. These include, plotly, dygraphs, highcharter, and several others.
SAS
General-Purpose Machine Learning
- Visual Data Mining and Machine Learning - Interactive, automated, and programmatic modeling with the latest machine learning algorithms in and end-to-end analytics environment, from data prep to deployment. Free trial available.
- Enterprise Miner - Data mining and machine learning that creates deployable models using a GUI or code.
- Factory Miner - Automatically creates deployable machine learning models across numerous market or customer segments using a GUI.
Data Analysis / Data Visualization
- SAS/STAT - For conducting advanced statistical analysis.
- University Edition - FREE! Includes all SAS packages necessary for data analysis and visualization, and includes online SAS courses.
Natural Language Processing
- Contextual Analysis - Add structure to unstructured text using a GUI.
- Sentiment Analysis - Extract sentiment from text using a GUI.
- Text Miner - Text mining using a GUI or code.
Demos and Scripts
- ML_Tables - Concise cheat sheets containing machine learning best practices.
- enlighten-apply - Example code and materials that illustrate applications of SAS machine learning techniques.
- enlighten-integration - Example code and materials that illustrate techniques for integrating SAS with other analytics technologies in Java, PMML, Python and R.
- enlighten-deep - Example code and materials that illustrate using neural networks with several hidden layers in SAS.
- dm-flow - Library of SAS Enterprise Miner process flow diagrams to help you learn by example about specific data mining topics.
Scala
Natural Language Processing
- ScalaNLP - ScalaNLP is a suite of machine learning and numerical computing libraries.
- Breeze - Breeze is a numerical processing library for Scala.
- Chalk - Chalk is a natural language processing library. [Deprecated]
- FACTORIE - FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.
- Montague - Montague is a semantic parsing library for Scala with an easy-to-use DSL.
- Spark NLP - Natural language processing library built on top of Apache Spark ML to provide simple, performant, and accurate NLP annotations for machine learning pipelines, that scale easily in a distributed environment.
Data Analysis / Data Visualization
- NDScala - N-dimensional arrays in Scala 3. Think NumPy ndarray, but with compile-time type-checking/inference over shapes, tensor/axis labels & numeric data types
- MLlib in Apache Spark - Distributed machine learning library in Spark
- Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
- Scalding - A Scala API for Cascading.
- Summing Bird - Streaming MapReduce with Scalding and Storm.
- Algebird - Abstract Algebra for Scala.
- xerial - Data management utilities for Scala. [Deprecated]
- PredictionIO - PredictionIO, a machine learning server for software developers and data engineers.
- BIDMat - CPU and GPU-accelerated matrix library intended to support large-scale exploratory data analysis.
- Flink - Open source platform for distributed stream and batch data processing.
- Spark Notebook - Interactive and Reactive Data Science using Scala and Spark.
General-Purpose Machine Learning
- Microsoft ML for Apache Spark -> A distributed machine learning framework Apache Spark
- ONNX-Scala - An ONNX (Open Neural Network eXchange) API and backend for typeful, functional deep learning in Scala (3).
- DeepLearning.scala - Creating statically typed dynamic neural networks from object-oriented & functional programming constructs.
- Conjecture - Scalable Machine Learning in Scalding.
- brushfire - Distributed decision tree ensemble learning in Scala.
- ganitha - Scalding powered machine learning. [Deprecated]
- adam - A genomics processing engine and specialized file format built using Apache Avro, Apache Spark and Parquet. Apache 2 licensed.
- bioscala - Bioinformatics for the Scala programming language
- BIDMach - CPU and GPU-accelerated Machine Learning Library.
- Figaro - a Scala library for constructing probabilistic models.
- H2O Sparkling Water - H2O and Spark interoperability.
- FlinkML in Apache Flink - Distributed machine learning library in Flink.
- DynaML - Scala Library/REPL for Machine Learning Research.
- Saul - Flexible Declarative Learning-Based Programming.
- SwiftLearner - Simply written algorithms to help study ML or write your own implementations.
- Smile - Statistical Machine Intelligence and Learning Engine.
- doddle-model - An in-memory machine learning library built on top of Breeze. It provides immutable objects and exposes its functionality through a scikit-learn-like API.
- TensorFlow Scala - Strongly-typed Scala API for TensorFlow.
Scheme
Neural Networks
- layer - Neural network inference from the command line, implemented in CHICKEN Scheme.
Swift
General-Purpose Machine Learning
- Bender - Fast Neural Networks framework built on top of Metal. Supports TensorFlow models.
- Swift AI - Highly optimized artificial intelligence and machine learning library written in Swift.
- Swift for Tensorflow - a next-generation platform for machine learning, incorporating the latest research across machine learning, compilers, differentiable programming, systems design, and beyond.
- BrainCore - The iOS and OS X neural network framework.
- swix - A bare bones library that includes a general matrix language and wraps some OpenCV for iOS development. [Deprecated]
- AIToolbox - A toolbox framework of AI modules written in Swift: Graphs/Trees, Linear Regression, Support Vector Machines, Neural Networks, PCA, KMeans, Genetic Algorithms, MDP, Mixture of Gaussians.
- MLKit - A simple Machine Learning Framework written in Swift. Currently features Simple Linear Regression, Polynomial Regression, and Ridge Regression.
- Swift Brain - The first neural network / machine learning library written in Swift. This is a project for AI algorithms in Swift for iOS and OS X development. This project includes algorithms focused on Bayes theorem, neural networks, SVMs, Matrices, etc...
- Perfect TensorFlow - Swift Language Bindings of TensorFlow. Using native TensorFlow models on both macOS / Linux.
- PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
- Awesome CoreML - A curated list of pretrained CoreML models.
- Awesome Core ML Models - A curated list of machine learning models in CoreML format.
TensorFlow
General-Purpose Machine Learning
- Awesome TensorFlow - A list of all things related to TensorFlow.
- Golden TensorFlow - A page of content on TensorFlow, including academic papers and links to related topics.
Tools
Neural Networks
- layer - Neural network inference from the command line
Misc
- Weaviate – Weaviate is an open source vector search engine and vector database. Weaviate uses machine learning to vectorize and store data, and to find answers to natural language queries. With Weaviate you can also bring your custom ML models to production scale.
- MLReef - MLReef is an end-to-end development platform using the power of git to give structure and deep collaboration possibilities to the ML development process.
- Pinecone - Vector database for applications that require real-time, scalable vector embedding and similarity search.
- CatalyzeX - Browser extension (Chrome and Firefox) that automatically finds and shows code implementations for machine learning papers anywhere: Google, Twitter, Arxiv, Scholar, etc.
- ML Workspace - All-in-one web-based IDE for machine learning and data science. The workspace is deployed as a docker container and is preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch) and dev tools (e.g., Jupyter, VS Code).
- Notebooks - A starter kit for Jupyter notebooks and machine learning. Companion docker images consist of all combinations of python versions, machine learning frameworks (Keras, PyTorch and Tensorflow) and CPU/CUDA versions.
- DVC - Data Science Version Control is an open-source version control system for machine learning projects with pipelines support. It makes ML projects reproducible and shareable.
- DVClive - Python library for experiment metrics logging into simply formatted local files.
- Kedro - Kedro is a data and development workflow framework that implements best practices for data pipelines with an eye towards productionizing machine learning models.
- guild.ai - Tool to log, analyze, compare and "optimize" experiments. It's cross-platform and framework independent, and provided integrated visualizers such as tensorboard.
- Sacred - Python tool to help you configure, organize, log and reproduce experiments. Like a notebook lab in the context of Chemistry/Biology. The community has built multiple add-ons leveraging the proposed standard.
- MLFlow - platform to manage the ML lifecycle, including experimentation, reproducibility and deployment. Framework and language agnostic, take a look at all the built-in integrations.
- Weights & Biases - Machine learning experiment tracking, dataset versioning, hyperparameter search, visualization, and collaboration
- More tools to improve the ML lifecycle: Catalyst, PachydermIO. The following are Github-alike and targeting teams Weights & Biases, Neptune.ai, Comet.ml, Valohai.ai, DAGsHub.
- MachineLearningWithTensorFlow2ed - a book on general purpose machine learning techniques regression, classification, unsupervised clustering, reinforcement learning, auto encoders, convolutional neural networks, RNNs, LSTMs, using TensorFlow 1.14.1.
- m2cgen - A tool that allows the conversion of ML models into native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart) with zero dependencies.
- CML - A library for doing continuous integration with ML projects. Use GitHub Actions & GitLab CI to train and evaluate models in production like environments and automatically generate visual reports with metrics and graphs in pull/merge requests. Framework & language agnostic.
- Pythonizr - An online tool to generate boilerplate machine learning code that uses scikit-learn.
- Flyte - Flyte makes it easy to create concurrent, scalable, and maintainable workflows for machine learning and data processing.
- Chaos Genius - ML powered analytics engine for outlier/anomaly detection and root cause analysis.
Books
- Distributed Machine Learning Patterns - This book teaches you how to take machine learning models from your personal laptop to large distributed clusters. You’ll explore key concepts and patterns behind successful distributed machine learning systems, and learn technologies like TensorFlow, Kubernetes, Kubeflow, and Argo Workflows directly from a key maintainer and contributor, with real-world scenarios and hands-on projects.
- Grokking Machine Learning - Grokking Machine Learning teaches you how to apply ML to your projects using only standard Python code and high school-level math.
- Machine Learning Bookcamp - Learn the essentials of machine learning by completing a carefully designed set of real-world projects.
* Netron - An opensource viewer for neural network, deep learning and machine learning models * Teachable Machine - Train Machine Learning models on the fly to recognize your own images, sounds, & poses. * Model Zoo - Discover open source deep learning code and pretrained models.
Credits
- Some of the python libraries were cut-and-pasted from vinta
- References for Go were mostly cut-and-pasted from gopherdata
Machine Learning & Deep Learning Tutorials 
-
This repository contains a topic-wise curated list of Machine Learning and Deep Learning tutorials, articles and other resources. Other awesome lists can be found in this list.
-
If you want to contribute to this list, please read Contributing Guidelines.
-
Curated list of R tutorials for Data Science, NLP and Machine Learning.
-
Curated list of Python tutorials for Data Science, NLP and Machine Learning.
Contents
- Introduction
- Interview Resources
- Artificial Intelligence
- Genetic Algorithms
- Statistics
- Useful Blogs
- Resources on Quora
- Resources on Kaggle
- Cheat Sheets
- Classification
- Linear Regression
- Logistic Regression
- Model Validation using Resampling
- Deep Learning
- Natural Language Processing
- Computer Vision
- Support Vector Machine
- Reinforcement Learning
- Decision Trees
- Random Forest / Bagging
- Boosting
- Ensembles
- Stacking Models
- VC Dimension
- Bayesian Machine Learning
- Semi Supervised Learning
- Optimizations
- Other Useful Tutorials
Introduction
-
In-depth introduction to machine learning in 15 hours of expert videos
-
A curated list of awesome Machine Learning frameworks, libraries and software
-
A curated list of awesome data visualization libraries and resources.
-
An awesome Data Science repository to learn and apply for real world problems
-
Machine Learning algorithms that you should always have a strong understanding of
-
Difference between Linearly Independent, Orthogonal, and Uncorrelated Variables
-
Twitter's Most Shared #machineLearning Content From The Past 7 Days
Interview Resources
-
41 Essential Machine Learning Interview Questions (with answers)
-
How can a computer science graduate student prepare himself for data scientist interviews?
Artificial Intelligence
-
Programming Community Curated Resources for learning Artificial Intelligence
-
MIT 6.034 Artificial Intelligence Lecture Videos, Complete Course
Genetic Algorithms
Statistics
-
Stat Trek Website - A dedicated website to teach yourselves Statistics
-
Learn Statistics Using Python - Learn Statistics using an application-centric programming approach
-
Statistics for Hackers | Slides | @jakevdp - Slides by Jake VanderPlas
-
Online Statistics Book - An Interactive Multimedia Course for Studying Statistics
-
Tutorials
-
OpenIntro Statistics - Free PDF textbook
Useful Blogs
-
Edwin Chen's Blog - A blog about Math, stats, ML, crowdsourcing, data science
-
The Data School Blog - Data science for beginners!
-
ML Wave - A blog for Learning Machine Learning
-
Andrej Karpathy - A blog about Deep Learning and Data Science in general
-
Colah's Blog - Awesome Neural Networks Blog
-
Alex Minnaar's Blog - A blog about Machine Learning and Software Engineering
-
Statistically Significant - Andrew Landgraf's Data Science Blog
-
Simply Statistics - A blog by three biostatistics professors
-
Yanir Seroussi's Blog - A blog about Data Science and beyond
-
fastML - Machine learning made easy
-
Trevor Stephens Blog - Trevor Stephens Personal Page
-
no free hunch | kaggle - The Kaggle Blog about all things Data Science
-
A Quantitative Journey | outlace - learning quantitative applications
-
r4stats - analyze the world of data science, and to help people learn to use R
-
Variance Explained - David Robinson's Blog
-
AI Junkie - a blog about Artificial Intellingence
-
Deep Learning Blog by Tim Dettmers - Making deep learning accessible
-
J Alammar's Blog- Blog posts about Machine Learning and Neural Nets
-
Adam Geitgey - Easiest Introduction to machine learning
-
Ethen's Notebook Collection - Continuously updated machine learning documentations (mainly in Python3). Contents include educational implementation of machine learning algorithms from scratch and open-source library usage
Resources on Quora
Kaggle Competitions WriteUp
Cheat Sheets
Classification
Linear Regression
Logistic Regression
-
Difference between logit and probit models, Logistic Regression Wiki, Probit Model Wiki
-
Pseudo R2 for Logistic Regression, How to calculate, Other Details
Model Validation using Resampling
-
- How to use cross-validation in predictive modeling
-
Overfitting and Cross Validation
Deep Learning
-
A curated list of awesome Deep Learning tutorials, projects and communities
-
Interesting Deep Learning and NLP Projects (Stanford), Website
-
Understanding Natural Language with Deep Neural Networks Using Torch
-
Introduction to Deep Learning Using Python (GitHub), Good Introduction Slides
-
Video Lectures Oxford 2015, Video Lectures Summer School Montreal
-
Neural Machine Translation
-
Deep Learning Frameworks
-
-
Caffe
-
TensorFlow
-
Feed Forward Networks
-
Recurrent and LSTM Networks
-
The Unreasonable effectiveness of RNNs, Torch Code, Python Code
-
Long Short Term Memory (LSTM)
-
Gated Recurrent Units (GRU)
-
Time series forecasting with Sequence-to-Sequence (seq2seq) rnn models
-
Restricted Boltzmann Machine
-
Autoencoders: Unsupervised (applies BackProp after setting target = input)
-
Convolutional Neural Networks
-
Network Representation Learning
Natural Language Processing
-
A curated list of speech and natural language processing resources
-
Understanding Natural Language with Deep Neural Networks Using Torch
-
Topic Modeling
-
word2vec
-
Text Clustering
-
Text Classification
-
Named Entity Recognitation
-
Kaggle Tutorial Bag of Words and Word vectors, Part 2, Part 3
Computer Vision
Support Vector Machine
-
Comparisons
-
Software
-
Kernels
-
Probabilities post SVM
Reinforcement Learning
Decision Trees
-
What is entropy and information gain in the context of building decision trees?
-
How do decision tree learning algorithms deal with missing values?
-
Discover structure behind data with decision trees - Grow and plot a decision tree to automatically figure out hidden rules in your data
-
Comparison of Different Algorithms
-
CART
-
CTREE
-
CHAID
-
MARS
-
Probabilistic Decision Trees
Random Forest / Bagging
-
Evaluating Random Forests for Survival Analysis Using Prediction Error Curve
-
Why doesn't Random Forest handle missing values in predictors?
Boosting
-
Gradient Boosting Machine
-
xgboost
-
AdaBoost
-
CatBoost
Ensembles
Stacking Models
Vapnik–Chervonenkis Dimension
Bayesian Machine Learning
Semi Supervised Learning
Optimization
-
Mean Variance Portfolio Optimization with R and Quadratic Programming
-
Hyperopt tutorial for Optimizing Neural Networks’ Hyperparameters
Other Tutorials

[RubyNLP | RubyDataScience | RubyInterop]
Awesome Machine Learning with Ruby 
Curated List of Ruby Machine Learning Links and Resources
Machine Learning is a field of Computational Science - often nested under AI research - with many practical applications due to the ability of resulting algorithms to systematically implement a specific solution without explicit programmer's instructions. Obviously many algorithms need a definition of features to look at or a biggish training set of data to derive the solution from.
This curated list comprises awesome libraries, data sources, tutorials and presentations about Machine Learning utilizing the Ruby programming language.
A lot of useful resources on this list come from the development by The Ruby Science Foundation, our contributors and our own day to day work on various ML applications.
:sparkles: Every contribution is welcome! Add links through pull requests or create an issue to start a discussion.
Follow us on Twitter and please spread
the word using the #RubyML hash tag!
Contents
- :sparkles: Tutorials
- Machine Learning Libraries
- Frameworks
- Neural networks
- Deep Learning
- Kernel methods
- Evolutionary algorithms
- Bayesian methods
- Decision trees
- Clustering
- Linear classifiers
- Statistical models
- Gradient boosting
- Applications of machine learning
- Data structures
- Data visualization
- Articles, Posts, Talks, and Presentations
- Projects and Code Examples
- Heroku buildpacks
- Books, Blogs, Channels
- Community
- Related Resources
- License
:sparkles: Tutorials
Please help us to fill out this section! :smiley: - Ruby neural networks - How to implement linear regression in Ruby [code] - How to implement classification using logistic regression in Ruby - How to implement simple binary classification using a Neural Network in Ruby [code] - How to implement classification using a SVM in Ruby [code] - Unsupervised learning using k-means clustering in Ruby [code] - Teaching an AI to play a simple game using Q-Learning in Ruby [code] - Teaching a Neural Network to play a game using Q-Learning in Ruby [code] - Using the Python scikit-learn machine learning library in Ruby using PyCall [code] - How to evolve neural networks in Ruby using the Machine Learning Workbench
Machine Learning Libraries
Machine Learning algorithms in pure Ruby or written in other programming languages with appropriate bindings for Ruby.
Frameworks
- weka - JRuby bindings for Weka, different ML algorithms implemented through Weka.
- ai4r - Artificial Intelligence for Ruby.
- classifier-reborn - General classifier module to allow Bayesian and other types of classifications. [dep: GLS]
- scoruby - Ruby scoring API for PMML (Predictive Model Markup Language).
- rblearn - Feature Extraction and Crossvalidation library.
- data_modeler - Model your data with machine learning. Ample test coverage, examples to start fast, complete documentation. Production ready since 1.0.0.
- shogun - Polyfunctional and mature machine learning toolbox with Ruby bindings.
- aws-sdk-machinelearning - Machine Learning API of the Amazon Web Services.
- azure_mgmt_machine_learning - Machine Learning API of the Microsoft Azure.
- machine_learning_workbench - Growing machine learning framework written in pure Ruby, high performance computing using Numo, CUDA bindings through Cumo. Currently implementating neural networks, evolutionary strategies, vector quantization, and plenty of examples and utilities.
- Deep NeuroEvolution - Experimental setup based on the machine_learning_workbench towards searching for deep neural networks (rather than training) using evolutionary algorithms. Applications to the OpenAI Gym using PyCall.
- rumale - Machine Learninig toolkit in Ruby with wide range of implemented algorithms (SVM, Logistic Regression, Linear Regression, Random Forest etc.) and interfaces similar to Scikit-Learn in Python.
- eps - Bayesian Classification and Linear Regression with exports using PMML and an alternative backend using GSL.
Neural networks
- neural-net-ruby - Neural network written in Ruby.
- ruby-fann - Ruby bindings to the Fast Artificial Neural Network Library (FANN).
- cerebrum - Experimental implementation for Artificial Neural Networks in Ruby.
- tlearn-rb - Recurrent Neural Network library for Ruby.
- brains - Feed-forward neural networks for JRuby based on brains.
- machine_learning_workbench - Framework including pure-Ruby implementation of both feed-forward and recurrent neural networks (fully connected). Training available using neuroevolution (Natural Evolution Strategies algorithms).
- rann - Flexible Ruby ANN implementation with backprop (through-time, for recurrent nets), gradient checking, adagrad, and parallel batch execution.
Deep learning
- tensor_stream - Ground-up and standalone reimplementation of TensorFlow for Ruby.
- red-chainer - Deep learning framework for Ruby.
- tensorflow - Ruby bindings for TensorFlow.
- ruby-dnn - Simple deep learning for Ruby.
- torch-rb - Ruby bindings for LibTorch using rice.
- mxnet - Ruby bindings for mxnet.
Kernel methods
- rb-libsvm - Support Vector Machines with Ruby and the LIBSVM library. [dep: bundled]
Evolutionary algorithms
- machine_learning_workbench - Framework including pure-Ruby implementations of Natural Evolution Strategy algorithms (black-box optimization), specifically Exponential NES (XNES), Separable NES (sNES), Block-Diagonal NES (BDNES) and more. Applications include neural network search/training (neuroevolution).
- simple_ga - Simplest Genetic Algorithms implementation in Ruby.
Bayesian methods
- linnaeus - Redis-backed Bayesian classifier.
- naive_bayes - Simple Naive Bayes classifier.
- nbayes - Full-featured, Ruby implementation of Naive Bayes.
Decision trees
- decisiontree - Decision Tree ID3 Algorithm in pure Ruby. [dep: GraphViz | post].
Clustering
- flann - Fast Library for Approximate Nearest Neighbors. [flann]
- kmeans-clusterer - k-means clustering in Ruby.
- k_means - Attempting to build a fast, memory efficient K-Means program.
- knn - Simple K Nearest Neighbour Algorithm.
- annoy-rb - bindings for the Annoy (Approximate Nearest Neighbors Oh Yeah).
Linear classifiers
- liblinear-ruby-swig - Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification).
- liblinear-ruby - Ruby interface to LIBLINEAR using SWIG.
Statistical models
- rtimbl - Memory based learners from the Timbl framework.
- lda-ruby - Ruby implementation of the LDA (Latent Dirichlet Allocation) for automatic Topic Modelling and Document Clustering.
- maxent_string_classifier - JRuby maximum entropy classifier for string data, based on the OpenNLP Maxent framework.
- omnicat - Generalized rack framework for text classifications.
- omnicat-bayes - Naive Bayes text classification implementation as an OmniCat classifier strategy. [dep: bundled]
Gradient boosting
- xgboost — Ruby bindings for XGBoost. [dep: XGBoost]
- xgb — Ruby bindings for XGBoost. [dep: XGBoost]
- lightgbm — Ruby bindings for LightGBM. [dep: LightGBM]
Applications of machine learning
- phashion - Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files. [ImageMagick | libjpeg]
Data structures
If you're going to implement your own ML algorithms you're probably interested in storing your feature sets efficiently. Look for appropriate data structures in our Data Science with Ruby list.
Data visualization
Please refer to the Data Visualization section on the Data Science with Ruby list.
Articles, Posts, Talks, and Presentations
- 2019
- TensorStream: Bringing Machine Learning to Ruby by Joseph Emmanuel Dayo [post]
- Easy machine learning with Ruby using SVMKit by @kojix [post]
- 2018
- Deep Learning Programming on Ruby by Kenta Murata & Yusaku Hatanaka [slides | page]
- How to use trained Keras and TensorFlow machine learning models within Ruby on Rails by Denis Sellu [post]
- 2017
- Scientific Computing on JRuby by Prasun Anand [slides | video | slides | slides]
- Is it Food? An Introduction to Machine Learning by Matthew Mongeau [video | slides]
- Bayes is BAE by Richard Schneeman [video | slides]
- Ruby Roundtable: Machine Learning in Ruby by RubyThursday [video]
- 2016
- Practical Machine Learning with Ruby by Jordan Hudgens [tutorial]
- Deep Learning: An Introduction for Ruby Developers by Geoffrey Litt [slides]
- How I made a pure-Ruby word2vec program more than 3x faster by Kei Sawada [slides]
- Dōmo arigatō, Mr. Roboto: Machine Learning with Ruby by Eric Weinstein [slides | video]
- Building a Recommendation Engine with Machine Learning Techniques by Brian Sam-Bodden [video]
- :sparkles: SciRuby Machine Learning: Current Status and Future by Kenta Murata [slides | video: jp]
- Ruby Roundtable: Intro to Tensorflow by RubyThursday [video]
- 2015
- Machine Learning made simple with Ruby by Lorenzo Masini [post]
- Using Ruby Machine Learning to Find Paris Hilton Quotes by Rick Carlino [tutorial]
- 2014
- Test Driven Neural Networks by Matthew Kirk [video]
- Five machine learning techniques that you can use in your Ruby apps today by Benjamin Curtis [video | slides]
- Machine Learning for Fun and Profit by John Paul Ashenfelter [video]
- 2013
- Sentiment Analysis using Support Vector Machines in Ruby by Matthew Kirk [video | code]
- Recommender Systems with Ruby by Marcel Caraciolo [slides]
- Detecting Faces with Ruby: FFI in a Nutshell by Marc Berszick [post]
- 2012
- Machine Learning with Ruby, Part One by Vasily Vasinov [tutorial]
- Recurrent Neural Networks in Ruby by Joseph Wilk [post]
- Recommendation Engines using Machine Learning, and JRuby by Matthew Kirk [video]
-
Practical Machine Learning and Rails by Andrew Cantino and Ryan Stout [video]
-
2011
- Clustering in Ruby by Colin Drake [post]
- Text Classification using Support Vector Machines in Ruby by Rimas Silkaitis [post]
- 2010
- bayes_motel – Bayesian classification for Ruby by Mike Perham [post]
- Intelligent Ruby: Getting Started with Machine Learning by Ilya Grigorik [video]
-
2009
-
2008
- Support Vector Machines (SVM) in Ruby by Ilya Grigorik [post]
- 2007
- Decision Tree Learning in Ruby by Ilya Grigorik [post]
Projects and Code Examples
- Wine Clustering - Wine quality estimations clustered with different algorithms.
- simple_ga - Basic (working) demo of Genetic Algorithms in Ruby.
- Handwritten Digits Recognition - Handwritten digits recognition using Neural Networks and Ruby.
Heroku buildpacks
Books, Blogs, Channels
- Kirk, Matthew. Thoughtful Machine Learning: A Test-Driven Approach. O'Reilly, 2014. [Amazon | code]
- Practical Artificial Intelligence - Blog about Artificial Intelligence and Machine Learning with tutorials and code samples in Ruby.
Community
Related Resources
- LightGBM
- XGBoost
- [GSL (GNU Scientific Library)][gls]
- OpenCV
- Graphviz
- Gnuplot
- X11/XQuartz
- ImageMagick
- R
- Octave
- scikit-learn algorithm cheatsheet
- Awesome Ruby - Among other awesome items a short list of NLP related projects.
- Ruby NLP - State-of-Art collection of Ruby libraries for NLP.
- Speech and Natural Language Processing - General List of NLP related resources (mostly not for Ruby programmers).
- Scientific Ruby - Linear Algebra, Visualization and Scientific Computing for Ruby.
- iRuby - IRuby kernel for Jupyter (formerly IPython).
- Kiba - Lightweight ETL (Extract, Transform, Load) pipeline.
- Awesome OCR - Multitude of OCR (Optical Character Recognition) resources.
- Awesome TensorFlow - Machine Learning with TensorFlow libraries.
- rb-gsl - Ruby interface to the GNU Scientific Library.
- The Definitive Guide to Ruby's C API - Modern Reference and Tutorial on Embedding and Extending Ruby using C programming language.
License
Awesome ML with Ruby by Andrei Beliankou and
Contributors.
To the extent possible under law, the person who associated CC0 with
Awesome ML with Ruby has waived all copyright and related or neighboring rights
to Awesome ML with Ruby.
You should have received a copy of the CC0 legalcode along with this work. If not, see https://creativecommons.org/publicdomain/zero/1.0/.
Since iOS 11, Apple released Core ML framework to help developers integrate machine learning models into applications. The official documentation
We've put up the largest collection of machine learning models in Core ML format, to help iOS, macOS, tvOS, and watchOS developers experiment with machine learning techniques.
If you've converted a Core ML model, feel free to submit a pull request.
Recently, we've included visualization tools. And here's one Netron.
Models
Image - Metadata/Text
Models that take image data as input and output useful information about the image. * TextDetection - Detecting text using Vision built-in model in real-time. Download | Demo | Reference * PhotoAssessment - Photo Assessment using Core ML and Metal. Download | Demo | Reference * PoseEstimation - Estimating human pose from a picture for mobile. Download | Demo | Reference * MobileNet - Detects the dominant objects present in an image. Download | Demo | Reference * Places CNN - Detects the scene of an image from 205 categories such as bedroom, forest, coast etc. Download | Demo | Reference * Inception v3 - Detects the dominant objects present in an image. Download | Demo | Reference * ResNet50 - Detects the dominant objects present in an image. Download | Demo | Reference * VGG16 - Detects the dominant objects present in an image. Download | Demo | Reference * Car Recognition - Predict the brand & model of a car. Download | Demo | Reference * YOLO - Recognize what the objects are inside a given image and where they are in the image. Download | Demo | Reference * AgeNet - Predict a person's age from one's portrait. Download | Demo | Reference * GenderNet - Predict a person's gender from one's portrait. Download | Demo | Reference * MNIST - Predict handwritten (drawn) digits from images. Download | Demo | Reference * EmotionNet - Predict a person's emotion from one's portrait. Download | Demo | Reference * SentimentVision - Predict positive or negative sentiments from images. Download | Demo | Reference * Food101 - Predict the type of foods from images. Download | Demo | Reference * Oxford102 - Detect the type of flowers from images. Download | Demo | Reference * FlickrStyle - Detect the artistic style of images. Download | Demo | Reference * RN1015k500 - Predict the location where a picture was taken. Download | Demo | Reference * Nudity - Classifies an image either as NSFW (nude) or SFW (not nude) Download | Demo | Reference * TextRecognition (ML Kit) - Recognizing text using ML Kit built-in model in real-time. Download | Demo | Reference * ImageSegmentation - Segment the pixels of a camera frame or image into a predefined set of classes. Download | Demo | Reference * DepthPrediction - Predict the depth from a single image. Download | Demo | Reference
Image - Image
Models that transform images. * HED - Detect nested edges from a color image. Download | Demo | Reference * AnimeScale2x - Process a bicubic-scaled anime-style artwork Download | Demo | Reference
Text - Metadata/Text
Models that process text data * Sentiment Polarity - Predict positive or negative sentiments from sentences. Download | Demo | Reference * DocumentClassification - Classify news articles into 1 of 5 categories. Download | Demo | Reference * iMessage Spam Detection - Detect whether a message is spam. Download | Demo | Reference * NamesDT - Gender Classification using DecisionTreeClassifier Download | Demo | Reference * Personality Detection - Predict personality based on user documents (sentences). Download | Demo | Reference * BERT for Question answering - Swift Core ML 3 implementation of BERT for Question answering Download | Demo | Reference * GPT-2 - OpenAI GPT-2 Text generation (Core ML 3) Download | Demo | Reference
Miscellaneous
- Exermote - Predicts the exercise, when iPhone is worn on right upper arm. Download | Demo | Reference
- GestureAI - Recommend an artist based on given location and genre. Download | Demo | Reference
- Artists Recommendation - Recommend an artist based on given location and genre. Download | Demo | Reference
Visualization Tools
Tools that help visualize CoreML Models * Netron
Supported formats
List of model formats that could be converted to Core ML with examples * Caffe * Keras * XGBoost * Scikit-learn * MXNet * LibSVM * Torch7
The Gold
Collections of machine learning models that could be converted to Core ML
- Caffe Model Zoo - Big list of models in Caffe format.
- TensorFlow Models - Models for TensorFlow.
- TensorFlow Slim Models - Another collection of TensorFlow Models.
- MXNet Model Zoo - Collection of MXNet models.
Individual machine learning models that could be converted to Core ML. We'll keep adjusting the list as they become converted. * LaMem Score the memorability of pictures. * ILGnet The aesthetic evaluation of images. * Colorization Automatic colorization using deep neural networks. * Illustration2Vec Estimating a set of tags and extracting semantic feature vectors from given illustrations. * CTPN Detecting text in natural image. * Image Analogy Find semantically-meaningful dense correspondences between two input images. * iLID Automatic spoken language identification. * Fashion Detection Cloth detection from images. * Saliency The prediction of salient areas in images has been traditionally addressed with hand-crafted features. * Face Detection Detect face from image. * mtcnn Joint Face Detection and Alignment. * deephorizon Single image horizon line estimation.
Contributing and License
- See the guide
- Distributed under the MIT license. See LICENSE for more information.
Awesome H2O

Below is a curated list of all the awesome projects, applications, research, tutorials, courses and books that use H2O, an open source, distributed machine learning platform. H2O offers parallelized implementations of many supervised and unsupervised machine learning algorithms such as Generalized Linear Models, Gradient Boosting Machines (including XGBoost), Random Forests, Deep Neural Networks (Deep Learning), Stacked Ensembles, Naive Bayes, Cox Proportional Hazards, K-means, PCA, Word2Vec, as well as a fully automatic machine learning algorithm (AutoML).
H2O.ai produces many tutorials, blog posts, presentations and videos about H2O, but the list below is comprised of awesome content produced by the greater H2O user community.
We are just getting started with this list, so pull requests are very much appreciated! 🙏 Please review the contribution guidelines before making a pull request. If you're not a GitHub user and want to make a contribution, please send an email to community@h2o.ai.
If you think H2O is awesome too, please ⭐ the H2O GitHub repository.
Contents
- Blog Posts & Tutorials
- Books
- Research Papers
- Benchmarks
- Presentations
- Courses
- Software (built using H2O)
- License
Blog Posts & Tutorials
- Using H2O AutoML to simplify training process (and also predict wine quality) Aug 4, 2020
- Visualizing ML Models with LIME
- Parallel Grid Search in H2O Jan 17, 2020
- Importing, Inspecting and Scoring with MOJO models inside H2O Dec 10, 2019
- Artificial Intelligence Made Easy with H2O.ai: A Comprehensive Guide to Modeling with H2O.ai and AutoML in Python June 12, 2019
- Anomaly Detection With Isolation Forests Using H2O Dec 03, 2018
- Predicting residential property prices in Bratislava using recipes - H2O Machine learning Nov 25, 2018
- Inspecting Decision Trees in H2O Nov 07, 2018
- Gentle Introduction to AutoML from H2O.ai Sep 13, 2018
- Machine Learning With H2O — Hands-On Guide for Data Scientists Jun 27, 2018
- Using machine learning with LIME to understand employee churn June 25, 2018
- Analytics at Scale: h2o, Apache Spark and R on AWS EMR June 21, 2018
- Automated and unmysterious machine learning in cancer detection Nov 7, 2017
- Time series machine learning with h2o+timetk Oct 28, 2017
- Sales Analytics: How to use machine learning to predict and optimize product backorders Oct 16, 2017
- HR Analytics: Using machine learning to predict employee turnover Sep 18, 2017
- Autoencoders and anomaly detection with machine learning in fraud analytics May 1, 2017
- Building deep neural nets with h2o and rsparkling that predict arrhythmia of the heart Feb 27, 2017
- Predicting food preferences with sparklyr (machine learning) Feb 19, 2017
- Moving largish data from R to H2O - spam detection with Enron emails Feb 18, 2016
- Deep learning & parameter tuning with mxnet, h2o package in R Jan 30, 2017
Books
- Big data in psychiatry and neurology, Chapter 11: A scalable medication intake monitoring system Diane Myung-Kyung Woodbridge and Kevin Bengtson Wong. (2021)
- Hands on Time Series with R Rami Krispin. (2019)
- Mastering Machine Learning with Spark 2.x Alex Tellez, Max Pumperla, Michal Malohlava. (2017)
- Machine Learning Using R Karthik Ramasubramanian, Abhishek Singh. (2016)
- Practical Machine Learning with H2O: Powerful, Scalable Techniques for Deep Learning and AI Darren Cook. (2016)
- Disruptive Analytics Thomas Dinsmore. (2016)
- Computer Age Statistical Inference: Algorithms, Evidence, and Data Science Bradley Efron, Trevor Hastie. (2016)
- R Deep Learning Essentials Joshua F. Wiley. (2016)
- Spark in Action Petar Zečević, Marko Bonaći. (2016)
- Handbook of Big Data Peter Bühlmann, Petros Drineas, Michael Kane, Mark J. van der Laan (2015)
Research Papers
- Depression Level Prediction in People with Parkinson’s Disease during the COVID-19 Pandemic) Hashneet Kaur, Patrick Ka-Cheong Poon, Sophie Yuefei Wang, Diane Myung-kyung Woodbridge. (2021)
- Machine Learning-based Meal Detection Using Continuous Glucose Monitoring on Healthy Participants: An Objective Measure of Participant Compliance to Protocol Victor Palacios, Diane Myung-kyung Woodbridge, Jean L. Fry. (2021)
- Maturity of gray matter structures and white matter connectomes, and their relationship with psychiatric symptoms in youth Alex Luna, Joel Bernanke, Kakyeong Kim, Natalie Aw, Jordan D. Dworkin, Jiook Cha, Jonathan Posner (2021).
- Appendectomy during the COVID-19 pandemic in Italy: a multicenter ambispective cohort study by the Italian Society of Endoscopic Surgery and new technologies (the CRAC study) Alberto Sartori, Mauro Podda, Emanuele Botteri, Roberto Passera, Ferdinando Agresta, Alberto Arezzo. (2021)
- Forecasting Canadian GDP Growth with Machine Learning Shafiullah Qureshi, Ba Chu, Fanny S. Demers. (2021)
- Morphological traits of reef corals predict extinction risk but not conservation status Nussaïbah B. Raja, Andreas Lauchstedt, John M. Pandolfi, Sun W. Kim, Ann F. Budd, Wolfgang Kiessling. (2021)
- Machine Learning as a Tool for Improved Housing Price Prediction Henrik I W. Wolstad and Didrik Dewan. (2020)
- Citizen Science Data Show Temperature-Driven Declines in Riverine Sentinel Invertebrates Timothy J. Maguire, Scott O. C. Mundle. (2020)
- Predicting Risk of Delays in Postal Deliveries with Neural Networks and Gradient Boosting Machines Matilda Söderholm. (2020)
- Stock Market Analysis using Stacked Ensemble Learning Method Malkar Takle. (2020)
- H2O AutoML: Scalable Automatic Machine Learning. Erin LeDell, Sebastien Poirier. (2020)
- Single-cell mass cytometry on peripheral blood identifies immune cell subsets associated with primary biliary cholangitis Jin Sung Jang, Brian D. Juran, Kevin Y. Cunningham, Vinod K. Gupta, Young Min Son, Ju Dong Yang, Ahmad H. Ali, Elizabeth Ann L. Enninga, Jaeyun Sung & Konstantinos N. Lazaridis. (2020)
- Prediction of the functional impact of missense variants in BRCA1 and BRCA2 with BRCA-ML Steven N. Hart, Eric C. Polley, Hermella Shimelis, Siddhartha Yadav, Fergus J. Couch. (2020)
- Innovative deep learning artificial intelligence applications for predicting relationships between individual tree height and diameter at breast height İlker Ercanlı. (2020)
- An Open Source AutoML Benchmark Peter Gijsbers, Erin LeDell, Sebastien Poirier, Janek Thomas, Berndt Bischl, Joaquin Vanschoren. (2019)
- Machine Learning in Python: Main developments and technology trends in data science, machine learning, and artificial intelligence Sebastian Raschka, Joshua Patterson, Corey Nolet. (2019)
- Human actions recognition in video scenes from multiple camera viewpoints Fernando Itano, Ricardo Pires, Miguel Angelo de Abreu de Sousa, Emilio Del-Moral-Hernandeza. (2019)
- Extending MLP ANN hyper-parameters Optimization by using Genetic Algorithm Fernando Itano, Miguel Angelo de Abreu de Sousa, Emilio Del-Moral-Hernandez. (2018)
- askMUSIC: Leveraging a Clinical Registry to Develop a New Machine Learning Model to Inform Patients of Prostate Cancer Treatments Chosen by Similar Men Gregory B. Auffenberg, Khurshid R. Ghani, Shreyas Ramani, Etiowo Usoro, Brian Denton, Craig Rogers, Benjamin Stockton, David C. Miller, Karandeep Singh. (2018)
- Machine Learning Methods to Perform Pricing Optimization. A Comparison with Standard GLMs Giorgio Alfredo Spedicato, Christophe Dutang, and Leonardo Petrini. (2018)
- Comparative Performance Analysis of Neural Networks Architectures on H2O Platform for Various Activation Functions Yuriy Kochura, Sergii Stirenko, Yuri Gordienko. (2017)
- Algorithmic trading using deep neural networks on high frequency data Andrés Arévalo, Jaime Niño, German Hernandez, Javier Sandoval, Diego León, Arbey Aragón. (2017)
- Generic online animal activity recognition on collar tags Jacob W. Kamminga, Helena C. Bisby, Duc V. Le, Nirvana Meratnia, Paul J. M. Havinga. (2017)
- Soil nutrient maps of Sub-Saharan Africa: assessment of soil nutrient content at 250 m spatial resolution using machine learning Tomislav Hengl, Johan G. B. Leenaars, Keith D. Shepherd, Markus G. Walsh, Gerard B. M. Heuvelink, Tekalign Mamo, Helina Tilahun, Ezra Berkhout, Matthew Cooper, Eric Fegraus, Ichsani Wheeler, Nketia A. Kwabena. (2017)
- Robust and flexible estimation of data-dependent stochastic mediation effects: a proposed method and example in a randomized trial setting Kara E. Rudolph, Oleg Sofrygin, Wenjing Zheng, and Mark J. van der Laan. (2017)
- Automated versus do-it-yourself methods for causal inference: Lessons learned from a data analysis competition Vincent Dorie, Jennifer Hill, Uri Shalit, Marc Scott, Dan Cervone. (2017)
- Using deep learning to predict the mortality of leukemia patients Reena Shaw Muthalaly. (2017)
- Use of a machine learning framework to predict substance use disorder treatment success Laura Acion, Diana Kelmansky, Mark van der Laan, Ethan Sahker, DeShauna Jones, Stephan Arnd. (2017)
- Ultra-wideband antenna-induced error prediction using deep learning on channel response data Janis Tiemann, Johannes Pillmann, Christian Wietfeld. (2017)
- Inferring passenger types from commuter eigentravel matrices Erika Fille T. Legara, Christopher P. Monterola. (2017)
- Deep neural networks, gradient-boosted trees, random forests: Statistical arbitrage on the S&P 500 Christopher Krauss, Xuan Anh Doa, Nicolas Huckb. (2016)
- Identifying IT purchases anomalies in the Brazilian government procurement system using deep learning Silvio L. Domingos, Rommel N. Carvalho, Ricardo S. Carvalho, Guilherme N. Ramos. (2016)
- Predicting recovery of credit operations on a Brazilian bank Rogério G. Lopes, Rommel N. Carvalho, Marcelo Ladeira, Ricardo S. Carvalho. (2016)
- Deep learning anomaly detection as support fraud investigation in Brazilian exports and anti-money laundering Ebberth L. Paula, Marcelo Ladeira, Rommel N. Carvalho, Thiago Marzagão. (2016)
- Deep learning and association rule mining for predicting drug response in cancer Konstantinos N. Vougas, Thomas Jackson, Alexander Polyzos, Michael Liontos, Elizabeth O. Johnson, Vassilis Georgoulias, Paul Townsend, Jiri Bartek, Vassilis G. Gorgoulis. (2016)
- The value of points of interest information in predicting cost-effective charging infrastructure locations Stéphanie Florence Visser. (2016)
- Adaptive modelling of spatial diversification of soil classification units. Journal of Water and Land Development Krzysztof Urbański, Stanisław Gruszczyńsk. (2016)
- Scalable ensemble learning and computationally efficient variance estimation Erin LeDell. (2015)
- Superchords: decoding EEG signals in the millisecond range Rogerio Normand, Hugo Alexandre Ferreira. (2015)
- Understanding random forests: from theory to practice Gilles Louppe. (2014)
Benchmarks
- Are categorical variables getting lost in your random forests? - Benchmark of categorical encoding schemes and the effect on tree based models (Scikit-learn vs H2O). Oct 28, 2016
- Deep learning in R - Benchmark of open source deep learning packages in R. Mar 7, 2016
- Szilard's machine learning benchmark - Benchmarks of Random Forest, GBM, Deep Learning and GLM implementations in common open source ML frameworks. Jul 3, 2015
Presentations
- Pipelines for model deployment Apr 25, 2017
- Machine learning with H2O.ai Jan 23, 2017
Courses
- University of San Francisco (USF) Distributed Data System Class (MSDS 697) - Master of Science in Data Science Program.
- University of Oslo: Introduction to Automatic and Scalable Machine Learning with H2O and R - Research Bazaar 2019
- UCLA: Tools in Data Science (STATS 418) - Masters of Applied Statistics Program.
- GWU: Data Mining (Decision Sciences 6279) - Masters of Science in Business Analytics.
- University of Cape Town: Analytics Module - Postgraduate Honors Program in Statistical Sciences.
- Coursera: How to Win a Data Science Competition: Learn from Top Kagglers - Advanced Machine Learning Specialization.
Software
- modeltime.h2o R package: Forecasting with H2O AutoML
- Evaporate: Run H2O models in the browser via Javascript. More info here.
- splash R package: Splashing a User Interface onto H2O MOJO Files. More info here.
- h2oparsnip R package: Set of wrappers to bind h2o algorthms with the parsnip package.
- Spin up PySpark and PySparkling on AWS
- Forecast the US demand for electricity: A real-time dashboard of the US electricity demand (forecast using H2O GLM)
License
To the extent possible under law, H2O.ai has waived all copyright and related or neighboring rights to this work.
Awesome Software Engineering for Machine Learning 

Software Engineering for Machine Learning are techniques and guidelines for building ML applications that do not concern the core ML problem -- e.g. the development of new algorithms -- but rather the surrounding activities like data ingestion, coding, testing, versioning, deployment, quality control, and team collaboration. Good software engineering practices enhance development, deployment and maintenance of production level applications using machine learning components.
⭐ Must-read
🎓 Scientific publication
Based on this literature, we compiled a survey on the adoption of software engineering practices for applications with machine learning components.
Feel free to take and share the survey and to read more!
Contents
- Broad Overviews
- Data Management
- Model Training
- Deployment and Operation
- Social Aspects
- Governance
- Tooling
Broad Overviews
These resources cover all aspects. - AI Engineering: 11 Foundational Practices ⭐ - Best Practices for Machine Learning Applications - Engineering Best Practices for Machine Learning ⭐ - Hidden Technical Debt in Machine Learning Systems 🎓⭐ - Rules of Machine Learning: Best Practices for ML Engineering ⭐ - Software Engineering for Machine Learning: A Case Study 🎓⭐
Data Management
How to manage the data sets you use in machine learning.
- A Survey on Data Collection for Machine Learning A Big Data - AI Integration Perspective_2019 🎓
- Automating Large-Scale Data Quality Verification 🎓
- Data management challenges in production machine learning
- Data Validation for Machine Learning 🎓
- How to organize data labelling for ML
- The curse of big data labeling and three ways to solve it
- The Data Linter: Lightweight, Automated Sanity Checking for ML Data Sets 🎓
- The ultimate guide to data labeling for ML
Model Training
How to organize your model training experiments.
- 10 Best Practices for Deep Learning
- Apples-to-apples in cross-validation studies: pitfalls in classifier performance measurement 🎓
- Fairness On The Ground: Applying Algorithmic FairnessApproaches To Production Systems🎓
- How do you manage your Machine Learning Experiments?
- Machine Learning Testing: Survey, Landscapes and Horizons 🎓
- Nitpicking Machine Learning Technical Debt
- On Comparing Classifiers: Pitfalls to Avoid and a Recommended Approach 🎓⭐
- On human intellect and machine failures: Troubleshooting integrative machine learning systems 🎓
- Pitfalls and Best Practices in Algorithm Configuration 🎓
- Pitfalls of supervised feature selection 🎓
- Preparing and Architecting for Machine Learning
- Preliminary Systematic Literature Review of Machine Learning System Development Process 🎓
- Software development best practices in a deep learning environment
- Testing and Debugging in Machine Learning
- What Went Wrong and Why? Diagnosing Situated Interaction Failures in the Wild 🎓
Deployment and Operation
How to deploy and operate your models in a production environment.
- Best Practices in Machine Learning Infrastructure
- Building Continuous Integration Services for Machine Learning 🎓
- Continuous Delivery for Machine Learning ⭐
- Continuous Training for Production ML in the TensorFlow Extended (TFX) Platform 🎓
- Fairness Indicators: Scalable Infrastructure for Fair ML Systems 🎓
- Machine Learning Logistics
- Machine learning: Moving from experiments to production
- ML Ops: Machine Learning as an engineered disciplined
- Model Governance Reducing the Anarchy of Production 🎓
- ModelOps: Cloud-based lifecycle management for reliable and trusted AI
- Operational Machine Learning
- Scaling Machine Learning as a Service🎓
- TFX: A tensorflow-based Production-Scale ML Platform 🎓
- The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction 🎓
- Underspecification Presents Challenges for Credibility in Modern Machine Learning 🎓
- Versioning for end-to-end machine learning pipelines 🎓
Social Aspects
How to organize teams and projects to ensure effective collaboration and accountability.
- Data Scientists in Software Teams: State of the Art and Challenges 🎓
- Machine Learning Interviews
- Managing Machine Learning Projects
- Principled Machine Learning: Practices and Tools for Efficient Collaboration
Governance
- A Human-Centered Interpretability Framework Based on Weight of Evidence 🎓
- An Architectural Risk Analysis Of Machine Learning Systems
- Beyond Debiasing
- Closing the AI Accountability Gap: Defining an End-to-End Framework for Internal Algorithmic Auditing 🎓
- Inherent trade-offs in the fair determination of risk scores 🎓
- Responsible AI practices ⭐
- Toward Trustworthy AI Development: Mechanisms for Supporting Verifiable Claims
- Understanding Software-2.0 🎓
Tooling
Tooling can make your life easier.
We only share open source tools, or commercial platforms that offer substantial free packages for research.
- Aim - Aim is an open source experiment tracking tool.
- Airflow - Programmatically author, schedule and monitor workflows.
- Alibi Detect - Python library focused on outlier, adversarial and drift detection.
- Archai - Neural architecture search.
- Data Version Control (DVC) - DVC is a data and ML experiments management tool.
- Facets Overview / Facets Dive - Robust visualizations to aid in understanding machine learning datasets.
- FairLearn - A toolkit to assess and improve the fairness of machine learning models.
- Git Large File System (LFS) - Replaces large files such as datasets with text pointers inside Git.
- Great Expectations - Data validation and testing with integration in pipelines.
- HParams - A thoughtful approach to configuration management for machine learning projects.
- Kubeflow - A platform for data scientists who want to build and experiment with ML pipelines.
- Label Studio - A multi-type data labeling and annotation tool with standardized output format.
- LiFT - Linkedin fairness toolkit.
- MLFlow - Manage the ML lifecycle, including experimentation, deployment, and a central model registry.
- Model Card Toolkit - Streamlines and automates the generation of model cards; for model documentation.
- Neptune.ai - Experiment tracking tool bringing organization and collaboration to data science projects.
- Neuraxle - Sklearn-like framework for hyperparameter tuning and AutoML in deep learning projects.
- OpenML - An inclusive movement to build an open, organized, online ecosystem for machine learning.
- PyTorch Lightning - The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate.
- REVISE: REvealing VIsual biaSEs - Automatically detect bias in visual data sets.
- Robustness Metrics - Lightweight modules to evaluate the robustness of classification models.
- Seldon Core - An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models on Kubernetes.
- Spark Machine Learning - Spark’s ML library consisting of common learning algorithms and utilities.
- TensorBoard - TensorFlow's Visualization Toolkit.
- Tensorflow Extended (TFX) - An end-to-end platform for deploying production ML pipelines.
- Tensorflow Data Validation (TFDV) - Library for exploring and validating machine learning data. Similar to Great Expectations, but for Tensorflow data.
- Weights & Biases - Experiment tracking, model optimization, and dataset versioning.
Contribute
Contributions welcomed! Read the contribution guidelines first
Awesome AI in Finance
Machine learning algorithm and useful tools use in financial market.
We collect all market include traditional market like stock/futures/currencies and crypto currency markets.
We're right 50.75 percent of the time, but we're 100 percent right 50.75 percent of the time, you can make billions that way. --- Robert Mercer, co-CEO of Renaissance Technologies
Contents
- Papers
- Courses & Book
- Strategies & Research
- Time Series Data
- Portfolio Management
- High Frequency Trading
- Event Drive
- Crypto Currencies Strategies
- Technical Analysis
- Lottery & Gamble
- Arbitrage
- Data Sources
- Research Tools
- Trading System
- TA Lib
- Exchange API
- Articles
- Others
Papers
- THE THEORY OF SPECULATION L. BACHELIER 1900 - The influences which determine the movements of the Stock Exchange are.
- Brownian Motion in the Stock Market Osborne,1959 - Events past, present or even anticipated, often showing no apparent.
- An Investigation into the Use of Reinforcement Learning Techniques within the Algorithmic Trading Domain(2015)
- Ten Financial Applications of Machine Learning (Presentation Slides)
- A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem
- Reinforcement Learning for Trading 1994
- Dragon-Kings, Black Swans and the Prediction of Crises Didier Sornette - We develop the concept of “dragon-kings” corresponding to meaningful outliers, which are found to coexist with power laws in the distributions of event sizes under a broad range of conditions in a large variety of systems.
- Financial Trading as a Game: A Deep Reinforcement Learning Approach - An automatic program that generates constant profit from the financial market is lucrative for every market practitioner. Recent advance in deep reinforcement learning provides a framework toward end-to-end training of such trading agent.
- MACHINE LEARNING FOR TRADING - With an appropriate choice of the reward function, reinforcement learning techniques (specifically, Q-learning) can successfully handle the risk-averse case.
- Ten Financial Applications of Machine Learning (Seminar Slides) (2018)
Courses & Book
- NYU: Overview of Advanced Methods of Reinforcement Learning in Finance
- Udacity: Artificial Intelligence for Trading
- AI in Finance - Learn Fintech Online.
- Advanced-Deep-Trading - Mostly experiments based on "Advances in financial machine learning" book.
- Advances in Financial Machine Learning - Readers will learn how to structure Big data in a way that is amenable to ML algorithms; how to conduct research with ML algorithms on that data; how to use supercomputing methods.
Strategies & Research
Time Series Data
Price and Volume process with Technology Analysis Indices
- 🌟🌟 stockpredictionai - In this noteboook I will create a complete process for predicting stock price movements. Follow along and we will achieve some pretty good results. For that purpose we will use a Generative Adversarial Network (GAN) with LSTM, a type of Recurrent Neural Network, as generator, and a Convolutional Neural Network, CNN, as a discriminator.
- 🌟 Personae - Personae is a repo of implements and environment of Deep Reinforcement Learning & Supervised Learning for Quantitative Trading.
- AutomatedStockTrading-DeepQ-Learning - Every day, millions of traders around the world are trying to make money by trading stocks. These days, physical traders are also being replaced by automated trading robots. Algorithmic trading market has experienced significant growth rate and large number of firms are using it. I have tried to build a Deep Q-learning reinforcement agent model.
- tf_deep_rl_trader - Trading Environment(OpenAI Gym) + PPO(TensorForce).
- trading-gym - This trading-gym is the first trading for agent to train with episode of short term trading itself.
- trading-rl - Deep Reinforcement Learning for Financial Trading using Price Trailing.
- deep_rl_trader - Trading Environment(OpenAI Gym) + DDQN (Keras-RL).
- 🌟 RL-Stock - 如何用深度强化学习自动炒股.
- Quantitative-Trading - Papers and Code Implements for Quantitative-Trading.
- gym-trading - Environment for reinforcement-learning algorithmic trading models.
- zenbrain - A framework for machine-learning bots.
- DeepLearningNotes - Machine Learning in Quant analysis.
- stock_market_reinforcement_learning - Stock Trading Market OpenAI Gym Environment with Deep Reinforcement Learning using Keras.
Portfolio Management
- Deep-Reinforcement-Stock-Trading - A light-weight deep reinforcement learning framework for portfolio management. This project explores the possibility of applying deep reinforcement learning algorithms to stock trading in a highly modular and scalable framework.
- qtrader - Reinforcement Learning for Portfolio Management.
- PGPortfolio - PGPortfolio - Policy Gradient Portfolio, the source code of "A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem.
- DeepDow - Portfolio optimization with deep learning.
High Frequency Trading
- 🌟 SGX-Full-OrderBook-Tick-Data-Trading-Strategy - Providing the solutions for high-frequency trading (HFT) strategies using data science approaches (Machine Learning) on Full Orderbook Tick Data.
- HFT_Bitcoin - Analysis of High Frequency Trading on Bitcoin exchanges.
Event Drive
- 🌟🌟 stockpredictionai - In this noteboook I will create a complete process for predicting stock price movements. Follow along and we will achieve some pretty good results. For that purpose we will use a Generative Adversarial Network (GAN) with LSTM, a type of Recurrent Neural Network, as generator, and a Convolutional Neural Network, CNN, as a discriminator.
- 🌟 trump2cash - A stock trading bot powered by Trump tweets.
Crypto Currencies Strategies
- LSTM-Crypto-Price-Prediction - Predicting price trends in cryptomarkets using an lstm-RNN for the use of a trading bot.
- tforce_btc_trader - TensorForce Bitcoin Trading Bot.
- Tensorflow-NeuroEvolution-Trading-Bot - Using tensorflow to build a population of models that trade cyrpto and breed and mutate iteratively.
- gekkoga - Genetic Algorithm for solving optimization of trading strategies using Gekko.
- Gekko_ANN_Strategies - ANN trading strategies for the Gekko trading bot.
- gekko-neuralnet - Neural network strategy for Gekko.
- bitcoin_prediction - This is the code for "Bitcoin Prediction" by Siraj Raval on YouTube.
Technical Analysis
- quant-trading - Python quantitative trading strategies.
- Gekko-Bot-Resources - Gekko bot resources.
- gekko_tools - Gekko strategies, tools etc.
- gekko RSI_WR - Gekko RSI_WR strategies.
- gekko HL - Calculate down peak and trade on.
- EthTradingAlgorithm - Ethereum trading algorithm using Python 3.5 and the library ZipLine.
- gekko_trading_stuff - A dumping ground for my files I use with this awesome crypto currency trading platform.
- forex.analytics - Node.js native library performing technical analysis over an OHLC dataset with use of genetic algorithmv.
- Bitcoin_MACD_Strategy - Bitcoin - MACD Crossover Trading Strategy Backtest.
- crypto-signal - Automated Crypto Trading & Technical Analysis (TA) Bot for Bittrex, Binance, GDAX, and more! (250+ coins).
- Gekko-Strategies - Strategies to Gekko trading bot with backtests results and some useful tools.
- gekko-gannswing - Gann's Swing trade strategy for Gekko trade bot.
Lottery & Gamble
- LotteryPredict - Use LSTM to predict lottery.
Arbitrage
- ArbitrageBot - Arbitrage bot that currently works on bittrex & poloniex.
- r2 - R2 Bitcoin Arbitrager is an automatic arbitrage trading system powered by Node.js + TypeScript.
- cryptocurrency-arbitrage - A cryptocurrency arbitrage opportunity calculator. Over 800 currencies and 50 markets.
- bitcoin-arbitrage - Bitcoin arbitrage - opportunity detector.
- blackbird - Blackbird Bitcoin Arbitrage: a long/short market-neutral strategy.
Data Sources
Traditional Markets
- 🌟 Quandl - Get millions of financial and economic datasets from hundreds of publishers via a single free API.
- yahoo-finance - Python module to get stock data from Yahoo! Finance.
- Tushare - TuShare is a utility for crawling historical data of China stocks.
Crypto Currencies
- CryptoInscriber - A live cryptocurrency historical trade data blotter. Download live historical trade data from any cryptoexchange, be it for machine learning, backtesting/visualizing trading strategies or for Quantopian/Zipline.
- Gekko-Datasets - Gekko Trading Bot dataset dumps. Ready to use and download history files in SQLite format.
Research Tools
- JAQS - An open source quant strategies research platform.
- pyfolio - Portfolio and risk analytics in Python.
- alphalens - Performance analysis of predictive (alpha) stock factors.
- empyrical - Common financial risk and performance metrics. Used by zipline and pyfolio.
- zvt - Zero vector trader.
Trading System
For Back Test & Live trading
Traditional Market
System
- 🌟🌟 zipline - Zipline, a Pythonic Algorithmic Trading Library.
- 🌟 TradingView - Get real-time information and market insights.
- rqalpha - A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities.
- backtrader - Python Backtesting library for trading strategies.
- kungfu - Kungfu Master Trading System.
Combine & Rebuild
- pylivetrader - Python live trade execution library with zipline interface.
- CoinMarketCapBacktesting - As backtesting frameworks for coin trading strategy.
Crypto Currencies
- zenbot - Zenbot is a command-line cryptocurrency trading bot using Node.js and MongoDB.
- bot18 - Bot18 is a high-frequency cryptocurrency trading bot developed by Zenbot.
- magic8bot - Magic8bot is a cryptocurrency trading bot using Node.js and MongoDB.
- catalyst - An Algorithmic Trading Library for Crypto-Assets in Python.
- QuantResearchDev - Quant Research dev & Traders open source project.
- MACD - Zenbot Macd Auto-Trader.
- abu - A quant trading system base on python.
Plugins
- easytrader
- CoinMarketCapBacktesting - This project tests bt and Quantopian Zipline as backtesting frameworks for coin trading strategy.
- Gekko-BacktestTool - Batch backtest, import and strategy params optimalization for Gekko Trading Bot. With one command you will run any number of backtests.
TA Lib
- pandas_talib - A Python Pandas implementation of technical analysis indicators.
- finta - Common financial technical indicators implemented in Python-Pandas (70+ indicators).
- tulipnode - Tulip Node is the official Node.js wrapper for Tulip Indicators. It provides over 100 technical analysis overlay and indicator functions.
- techan.js - A visual, technical analysis and charting (Candlestick, OHLC, indicators) library built on D3.
Exchange API
Do it in real world!
- IbPy - Python API for the Interactive Brokers on-line trading system.
- HuobiFeeder - Connect HUOBIPRO exchange, get market/historical data for ABAT trading platform backtest/analysis and live trading.
- ctpwrapper - Shanghai future exchange CTP api.
Framework
- tf-quant-finance - High-performance TensorFlow library for quantitative finance.
Visualizing
- playground - Play with neural networks.
- netron - Visualizer for deep learning and machine learning models.
GYM Environment
- 🌟 TradingGym - Trading and Backtesting environment for training reinforcement learning agent or simple rule base algo.
- TradzQAI - Trading environnement for RL agents, backtesting and training.
- btgym - Scalable, event-driven, deep-learning-friendly backtesting library.
Articles
- The-Economist - The Economist 经济学人,持续更新.
- nyu-mlif-notes - NYU machine learning in finance notes.
- Using LSTMs to Turn Feelings Into Trades
- Maury Osborne和三文鱼的故事
- 布朗运动、伊藤引理——细说Black-Scholes公式的前世今生(上篇)
- 布朗运动、伊藤引理——细说Black-Scholes公式的前世今生(下篇)
- 趋势策略小试牛刀,海龟交易体系的构建
Others
- zipline-tensorboard - TensorBoard as a Zipline dashboard http://jimgoo.com/tensorboard-and-zip.
- gekko-quasar-ui - An UI port for gekko trading bot using Quasar framework.
Other Resource
- 🌟 Awesome-Quant-Machine-Learning-Trading - Quant/Algorithm trading resources with an emphasis on Machine Learning.
- awesome-quant - A curated list of insanely awesome libraries, packages and resources for Quants (Quantitative Finance).
- awesome-quant-china - Quant resource in china.
- awesome-rl
Awesome JAX 

JAX brings automatic differentiation and the XLA compiler together through a NumPy-like API for high performance machine learning research on accelerators like GPUs and TPUs.
This is a curated list of awesome JAX libraries, projects, and other resources. Contributions are welcome!
Contents
Libraries
- Neural Network Libraries
- Flax - Centered on flexibility and clarity.
- Haiku - Focused on simplicity, created by the authors of Sonnet at DeepMind.
- Objax - Has an object oriented design similar to PyTorch.
- Elegy - A High Level API for Deep Learning in JAX. Supports Flax, Haiku, and Optax.
- Trax - "Batteries included" deep learning library focused on providing solutions for common workloads.
- Jraph - Lightweight graph neural network library.
- Neural Tangents - High-level API for specifying neural networks of both finite and infinite width.
- HuggingFace - Ecosystem of pretrained Transformers for a wide range of natural language tasks (Flax).
- Equinox - Callable PyTrees and filtered JIT/grad transformations => neural networks in JAX.
- Flax - Centered on flexibility and clarity.
- NumPyro - Probabilistic programming based on the Pyro library.
- Chex - Utilities to write and test reliable JAX code.
- Optax - Gradient processing and optimization library.
- RLax - Library for implementing reinforcement learning agents.
- JAX, M.D. - Accelerated, differential molecular dynamics.
- Coax - Turn RL papers into code, the easy way.
- Distrax - Reimplementation of TensorFlow Probability, containing probability distributions and bijectors.
- cvxpylayers - Construct differentiable convex optimization layers.
- TensorLy - Tensor learning made simple.
- NetKet - Machine Learning toolbox for Quantum Physics.
New Libraries
This section contains libraries that are well-made and useful, but have not necessarily been battle-tested by a large userbase yet.
- Neural Network Libraries
- FedJAX - Federated learning in JAX, built on Optax and Haiku.
- Equivariant MLP - Construct equivariant neural network layers.
- jax-resnet - Implementations and checkpoints for ResNet variants in Flax.
- Parallax - Immutable Torch Modules for JAX.
- FedJAX - Federated learning in JAX, built on Optax and Haiku.
- jax-unirep - Library implementing the UniRep model for protein machine learning applications.
- jax-flows - Normalizing flows in JAX.
- sklearn-jax-kernels -
scikit-learnkernel matrices using JAX. - jax-cosmo - Differentiable cosmology library.
- efax - Exponential Families in JAX.
- mpi4jax - Combine MPI operations with your Jax code on CPUs and GPUs.
- imax - Image augmentations and transformations.
- FlaxVision - Flax version of TorchVision.
- Oryx - Probabilistic programming language based on program transformations.
- Optimal Transport Tools - Toolbox that bundles utilities to solve optimal transport problems.
- delta PV - A photovoltaic simulator with automatic differentation.
- jaxlie - Lie theory library for rigid body transformations and optimization.
- BRAX - Differentiable physics engine to simulate environments along with learning algorithms to train agents for these environments.
- flaxmodels - Pretrained models for Jax/Flax.
- CR.Sparse - XLA accelerated algorithms for sparse representations and compressive sensing.
- exojax - Automatic differentiable spectrum modeling of exoplanets/brown dwarfs compatible to JAX.
- JAXopt - Hardware accelerated (GPU/TPU), batchable and differentiable optimizers in JAX.
- PIX - PIX is an image processing library in JAX, for JAX.
- bayex - Bayesian Optimization powered by JAX.
- JaxDF - Framework for differentiable simulators with arbitrary discretizations.
- tree-math - Convert functions that operate on arrays into functions that operate on PyTrees.
- jax-models - Implementations of research papers originally without code or code written with frameworks other than JAX.
- PGMax - A framework for building discrete Probabilistic Graphical Models (PGM's) and running inference inference on them via JAX.
- EvoJAX - Hardware-Accelerated Neuroevolution
- evosax - JAX-Based Evolution Strategies
- SymJAX - Symbolic CPU/GPU/TPU programming.
- mcx - Express & compile probabilistic programs for performant inference.
- Einshape - DSL-based reshaping library for JAX and other frameworks.
- ALX - Open-source library for distributed matrix factorization using Alternating Least Squares, more info in ALX: Large Scale Matrix Factorization on TPUs.
- Diffrax - Numerical differential equation solvers in JAX.
- tinygp - The tiniest of Gaussian process libraries in JAX.
Models and Projects
JAX
- Fourier Feature Networks - Official implementation of Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains.
- kalman-jax - Approximate inference for Markov (i.e., temporal) Gaussian processes using iterated Kalman filtering and smoothing.
- GPJax - Gaussian processes in JAX.
- jaxns - Nested sampling in JAX.
- Amortized Bayesian Optimization - Code related to Amortized Bayesian Optimization over Discrete Spaces.
- Accurate Quantized Training - Tools and libraries for running and analyzing neural network quantization experiments in JAX and Flax.
- BNN-HMC - Implementation for the paper What Are Bayesian Neural Network Posteriors Really Like?.
- JAX-DFT - One-dimensional density functional theory (DFT) in JAX, with implementation of Kohn-Sham equations as regularizer: building prior knowledge into machine-learned physics.
- Robust Loss - Reference code for the paper A General and Adaptive Robust Loss Function.
- Symbolic Functionals - Demonstration from Evolving symbolic density functionals.
- TriMap - Official JAX implementation of TriMap: Large-scale Dimensionality Reduction Using Triplets.
Flax
- Performer - Flax implementation of the Performer (linear transformer via FAVOR+) architecture.
- JaxNeRF - Implementation of NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis with multi-device GPU/TPU support.
- mip-NeRF - Official implementation of Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields.
- RegNeRF - Official implementation of RegNeRF: Regularizing Neural Radiance Fields for View Synthesis from Sparse Inputs.
- Big Transfer (BiT) - Implementation of Big Transfer (BiT): General Visual Representation Learning.
- JAX RL - Implementations of reinforcement learning algorithms.
- gMLP - Implementation of Pay Attention to MLPs.
- MLP Mixer - Minimal implementation of MLP-Mixer: An all-MLP Architecture for Vision.
- Distributed Shampoo - Implementation of Second Order Optimization Made Practical.
- NesT - Official implementation of Aggregating Nested Transformers.
- XMC-GAN - Official implementation of Cross-Modal Contrastive Learning for Text-to-Image Generation.
- FNet - Official implementation of FNet: Mixing Tokens with Fourier Transforms.
- GFSA - Official implementation of Learning Graph Structure With A Finite-State Automaton Layer.
- IPA-GNN - Official implementation of Learning to Execute Programs with Instruction Pointer Attention Graph Neural Networks.
- Flax Models - Collection of models and methods implemented in Flax.
- Protein LM - Implements BERT and autoregressive models for proteins, as described in Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences and ProGen: Language Modeling for Protein Generation.
- Slot Attention - Reference implementation for Differentiable Patch Selection for Image Recognition.
- Vision Transformer - Official implementation of An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.
- FID computation - Port of mseitzer/pytorch-fid to Flax.
- ARDM - Official implementation of Autoregressive Diffusion Models.
- D3PM - Official implementation of Structured Denoising Diffusion Models in Discrete State-Spaces.
- Gumbel-max Causal Mechanisms - Code for Learning Generalized Gumbel-max Causal Mechanisms, with extra code in GuyLor/gumbel_max_causal_gadgets_part2.
- Latent Programmer - Code for the ICML 2021 paper Latent Programmer: Discrete Latent Codes for Program Synthesis.
- SNeRG - Official implementation of Baking Neural Radiance Fields for Real-Time View Synthesis.
- Spin-weighted Spherical CNNs - Adaptation of Spin-Weighted Spherical CNNs.
- VDVAE - Adaptation of Very Deep VAEs Generalize Autoregressive Models and Can Outperform Them on Images, original code at openai/vdvae.
- MUSIQ - Checkpoints and model inference code for the ICCV 2021 paper MUSIQ: Multi-scale Image Quality Transformer
- AQuaDem - Official implementation of Continuous Control with Action Quantization from Demonstrations.
- Combiner - Official implementation of Combiner: Full Attention Transformer with Sparse Computation Cost.
- Dreamfields - Official implementation of the ICLR 2022 paper Progressive Distillation for Fast Sampling of Diffusion Models.
- GIFT - Official implementation of Gradual Domain Adaptation in the Wild:When Intermediate Distributions are Absent.
- Light Field Neural Rendering - Official implementation of Light Field Neural Rendering.
Haiku
- AlphaFold - Implementation of the inference pipeline of AlphaFold v2.0, presented in Highly accurate protein structure prediction with AlphaFold.
- Adversarial Robustness - Reference code for Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples and Fixing Data Augmentation to Improve Adversarial Robustness.
- Bootstrap Your Own Latent - Implementation for the paper Bootstrap your own latent: A new approach to self-supervised Learning.
- Gated Linear Networks - GLNs are a family of backpropagation-free neural networks.
- Glassy Dynamics - Open source implementation of the paper Unveiling the predictive power of static structure in glassy systems.
- MMV - Code for the models in Self-Supervised MultiModal Versatile Networks.
- Normalizer-Free Networks - Official Haiku implementation of NFNets.
- NuX - Normalizing flows with JAX.
- OGB-LSC - This repository contains DeepMind's entry to the PCQM4M-LSC (quantum chemistry) and MAG240M-LSC (academic graph) tracks of the OGB Large-Scale Challenge (OGB-LSC).
- Persistent Evolution Strategies - Code used for the paper Unbiased Gradient Estimation in Unrolled Computation Graphs with Persistent Evolution Strategies.
- Two Player Auction Learning - JAX implementation of the paper Auction learning as a two-player game.
- WikiGraphs - Baseline code to reproduce results in WikiGraphs: A Wikipedia Text - Knowledge Graph Paired Datase.
Trax
- Reformer - Implementation of the Reformer (efficient transformer) architecture.
Videos
- NeurIPS 2020: JAX Ecosystem Meetup - JAX, its use at DeepMind, and discussion between engineers, scientists, and JAX core team.
- Introduction to JAX - Simple neural network from scratch in JAX.
- JAX: Accelerated Machine Learning Research | SciPy 2020 | VanderPlas - JAX's core design, how it's powering new research, and how you can start using it.
- Bayesian Programming with JAX + NumPyro — Andy Kitchen - Introduction to Bayesian modelling using NumPyro.
- JAX: Accelerated machine-learning research via composable function transformations in Python | NeurIPS 2019 | Skye Wanderman-Milne - JAX intro presentation in Program Transformations for Machine Learning workshop.
- JAX on Cloud TPUs | NeurIPS 2020 | Skye Wanderman-Milne and James Bradbury - Presentation of TPU host access with demo.
- Deep Implicit Layers - Neural ODEs, Deep Equilibirum Models, and Beyond | NeurIPS 2020 - Tutorial created by Zico Kolter, David Duvenaud, and Matt Johnson with Colab notebooks avaliable in Deep Implicit Layers.
- Solving y=mx+b with Jax on a TPU Pod slice - Mat Kelcey - A four part YouTube tutorial series with Colab notebooks that starts with Jax fundamentals and moves up to training with a data parallel approach on a v3-32 TPU Pod slice.
- JAX, Flax & Transformers 🤗 - 3 days of talks around JAX / Flax, Transformers, large-scale language modeling and other great topics.
Papers
This section contains papers focused on JAX (e.g. JAX-based library whitepapers, research on JAX, etc). Papers implemented in JAX are listed in the Models/Projects section.
- Compiling machine learning programs via high-level tracing. Roy Frostig, Matthew James Johnson, Chris Leary. MLSys 2018. - White paper describing an early version of JAX, detailing how computation is traced and compiled.
- JAX, M.D.: A Framework for Differentiable Physics. Samuel S. Schoenholz, Ekin D. Cubuk. NeurIPS 2020. - Introduces JAX, M.D., a differentiable physics library which includes simulation environments, interaction potentials, neural networks, and more.
- Enabling Fast Differentially Private SGD via Just-in-Time Compilation and Vectorization. Pranav Subramani, Nicholas Vadivelu, Gautam Kamath. arXiv 2020. - Uses JAX's JIT and VMAP to achieve faster differentially private than existing libraries.
Tutorials and Blog Posts
- Using JAX to accelerate our research by David Budden and Matteo Hessel - Describes the state of JAX and the JAX ecosystem at DeepMind.
- Getting started with JAX (MLPs, CNNs & RNNs) by Robert Lange - Neural network building blocks from scratch with the basic JAX operators.
- Tutorial: image classification with JAX and Flax Linen by 8bitmp3 - Learn how to create a simple convolutional network with the Linen API by Flax and train it to recognize handwritten digits.
- Plugging Into JAX by Nick Doiron - Compares Flax, Haiku, and Objax on the Kaggle flower classification challenge.
- Meta-Learning in 50 Lines of JAX by Eric Jang - Introduction to both JAX and Meta-Learning.
- Normalizing Flows in 100 Lines of JAX by Eric Jang - Concise implementation of RealNVP.
- Differentiable Path Tracing on the GPU/TPU by Eric Jang - Tutorial on implementing path tracing.
- Ensemble networks by Mat Kelcey - Ensemble nets are a method of representing an ensemble of models as one single logical model.
- Out of distribution (OOD) detection by Mat Kelcey - Implements different methods for OOD detection.
- Understanding Autodiff with JAX by Srihari Radhakrishna - Understand how autodiff works using JAX.
- From PyTorch to JAX: towards neural net frameworks that purify stateful code by Sabrina J. Mielke - Showcases how to go from a PyTorch-like style of coding to a more Functional-style of coding.
- Extending JAX with custom C++ and CUDA code by Dan Foreman-Mackey - Tutorial demonstrating the infrastructure required to provide custom ops in JAX.
- Evolving Neural Networks in JAX by Robert Tjarko Lange - Explores how JAX can power the next generation of scalable neuroevolution algorithms.
- Exploring hyperparameter meta-loss landscapes with JAX by Luke Metz - Demonstrates how to use JAX to perform inner-loss optimization with SGD and Momentum, outer-loss optimization with gradients, and outer-loss optimization using evolutionary strategies.
- Deterministic ADVI in JAX by Martin Ingram - Walk through of implementing automatic differentiation variational inference (ADVI) easily and cleanly with JAX.
- Evolved channel selection by Mat Kelcey - Trains a classification model robust to different combinations of input channels at different resolutions, then uses a genetic algorithm to decide the best combination for a particular loss.
- Introduction to JAX by Kevin Murphy - Colab that introduces various aspects of the language and applies them to simple ML problems.
- Writing an MCMC sampler in JAX by Jeremie Coullon - Tutorial on the different ways to write an MCMC sampler in JAX along with speed benchmarks.
- How to add a progress bar to JAX scans and loops by Jeremie Coullon - Tutorial on how to add a progress bar to compiled loops in JAX using the
host_callbackmodule. - Get started with JAX by Aleksa Gordić - A series of notebooks and videos going from zero JAX knowledge to building neural networks in Haiku.
Community
Contributing
Contributions welcome! Read the contribution guidelines first.
Contents
Papers
Landmarks
These are some of our favorite papers. They are helpful to understand the field and critical aspects of it. We believe this papers are worth reading in their entirety.
- Explanation in Artificial Intelligence: Insights from the Social Sciences - This paper provides an introduction to the social science research into explanations. The author provides 4 major findings: (1) explanations are constrastive, (2) explanations are selected, (3) probabilities probably don't matter, (4) explanations are social. These fit into the general theme that explanations are -contextual-.
- Sanity Checks for Saliency Maps - An important read for anyone using saliency maps. This paper proposes two experiments to determine whether saliency maps are useful: (1) model parameter randomization test compares maps from trained and untrained models, (2) data randomization test compares maps from models trained on the original dataset and models trained on the same dataset with randomized labels. They find that "some widely deployed saliency methods are independent of both the data the model was trained on, and the model parameters".
Surveys
- Explainable Deep Learning: A Field Guide for the Uninitiated - An in-depth description of XAI focused on technqiues for deep learning.
Evaluations
- Quantifying Explainability of Saliency Methods in Deep Neural Networks - An analysis of how different heatmap-based saliency methods perform based on experimentation with a generated dataset.
XAI Methods
- Ada-SISE - Adaptive semantice inpute sampling for explanation.
- ALE - Accumulated local effects plot.
- ALIME - Autoencoder Based Approach for Local Interpretability.
- Anchors - High-Precision Model-Agnostic Explanations.
- Auditing - Auditing black-box models.
- BayLIME - Bayesian local interpretable model-agnostic explanations.
- Break Down - Break down plots for additive attributions.
- CAM - Class activation mapping.
- CDT - Confident interpretation of Bayesian decision tree ensembles.
- CICE - Centered ICE plot.
- CMM - Combined multiple models metalearner.
- Conj Rules - Using sampling and queries to extract rules from trained neural networks.
- CP - Contribution propogation.
- DecText - Extracting decision trees from trained neural networks.
- DeepLIFT - Deep label-specific feature learning for image annotation.
- DTD - Deep Taylor decomposition.
- ExplainD - Explanations of evidence in additive classifiers.
- FIRM - Feature importance ranking measure.
- Fong, et. al. - Meaninful perturbations model.
- G-REX - Rule extraction using genetic algorithms.
- Gibbons, et. al. - Explain random forest using decision tree.
- GoldenEye - Exploring classifiers by randomization.
- GPD - Gaussian process decisions.
- GPDT - Genetic program to evolve decision trees.
- GradCAM - Gradient-weighted Class Activation Mapping.
- GradCAM++ - Generalized gradient-based visual explanations.
- Hara, et. al. - Making tree ensembles interpretable.
- ICE - Individual conditional expectation plots.
- IG - Integrated gradients.
- inTrees - Interpreting tree ensembles with inTrees.
- IOFP - Iterative orthoganol feature projection.
- IP - Information plane visualization.
- KL-LIME - Kullback-Leibler Projections based LIME.
- Krishnan, et. al. - Extracting decision trees from trained neural networks.
- Lei, et. al. - Rationalizing neural predictions with generator and encoder.
- LIME - Local Interpretable Model-Agnostic Explanations.
- LOCO - Leave-one covariate out.
- LORE - Local rule-based explanations.
- Lou, et. al. - Accurate intelligibile models with pairwise interactions.
- LRP - Layer-wise relevance propogation.
- MCR - Model class reliance.
- MES - Model explanation system.
- MFI - Feature importance measure for non-linear algorithms.
- NID - Neural interpretation diagram.
- OptiLIME - Optimized LIME.
- PALM - Partition aware local model.
- PDA - Prediction Difference Analysis: Visualize deep neural network decisions.
- PDP - Partial dependence plots.
- POIMs - Positional oligomer importance matrices for understanding SVM signal detectors.
- ProfWeight - Transfer information from deep network to simpler model.
- Prospector - Interactive partial dependence diagnostics.
- QII - Quantitative input influence.
- REFNE - Extracting symbolic rules from trained neural network ensembles.
- RETAIN - Reverse time attention model.
- RISE - Randomized input sampling for explanation.
- RxREN - Reverse engineering neural networks for rule extraction.
- SHAP - A unified approach to interpretting model predictions.
- SIDU - Similarity, difference, and uniqueness input perturbation.
- Simonynan, et. al - Visualizing CNN classes.
- Singh, et. al - Programs as black-box explanations.
- STA - Interpreting models via Single Tree Approximation.
- Strumbelj, et. al. - Explanation of individual classifications using game theory.
- SVM+P - Rule extraction from support vector machines.
- TCAV - Testing with concept activation vectors.
- Tolomei, et. al. - Interpretable predictions of tree-ensembles via actionable feature tweaking.
- Tree Metrics - Making sense of a forest of trees.
- TreeSHAP - Consistent feature attribute for tree ensembles.
- TreeView - Feature-space partitioning.
- TREPAN - Extracting tree-structured representations of trained networks.
- TSP - Tree space prototypes.
- VBP - Visual back-propagation.
- VEC - Variable effect characteristic curve.
- VIN - Variable interaction network.
- X-TREPAN - Adapted etraction of comprehensible decision tree in ANNs.
- Xu, et. al. - Show, attend, tell attention model.
Interpretable Models
- Decision List - Like a decision tree with no branches.
- Decision Trees - The tree provides an interpretation.
- Explainable Boosting Machine - Method that predicts based on learned vector graphs of features.
- k-Nearest Neighbors - The prototypical clustering method.
- Linear Regression - Easily plottable and understandable regression.
- Logistic Regression - Easily plottable and understandable classification.
- Naive Bayes - Good classification, poor estimation using conditional probabilities.
- RuleFit - Sparse linear model as decision rules including feature interactions.
Critiques
- Attention is not Explanation - Authors perform a series of NLP experiments which argue attention does not provide meaningful explanations. They also demosntrate that different attentions can generate similar model outputs.
- Attention is not --not-- Explanation - This is a rebutal to the above paper. Authors argue that multiple explanations can be valid and that the and that attention can produce a valid explanation, if not -the- valid explanation.
- Do Not Trust Additive Explanations - Authors argue that addditive explanations (e.g. LIME, SHAP, Break Down) fail to take feature ineractions into account and are thus unreliable.
- Please Stop Permuting Features An Explanation and Alternatives - Authors demonstrate why permuting features is misleading, especially where there is strong feature dependence. They offer several previously described alternatives.
- Stop Explaining Black Box Machine Learning Models for High States Decisions and Use Interpretable Models Instead - Authors present a number of issues with explainable ML and challenges to interpretable ML: (1) constructing optimal logical models, (2) constructing optimal sparse scoring systems, (3) defining interpretability and creating methods for specific methods. They also offer an argument for why interpretable models might exist in many different domains.
- The (Un)reliability of Saliency Methods - Authors demonstrate how saliency methods vary attribution when adding a constant shift to the input data. They argue that methods should fulfill input invariance, that a saliency method mirror the sensistivity of the model with respect to transformations of the input.
Repositories
- EthicalML/xai - A toolkit for XAI which is focused exclusively on tabular data. It implements a variety of data and model evaluation techniques.
- MAIF/shapash - SHAP and LIME-based front-end explainer.
- PAIR-code/what-if-tool - A tool for Tensorboard or Notebooks which allows investigating model performance and fairness.
- slundberg/shap - A Python module for using Shapley Additive Explanations.
Videos
- Debate: Interpretability is necessary for ML - A debate on whether interpretability is necessary for ML with Rich Caruana and Patrice Simard for and Kilian Weinberger and Yann LeCun against.
Follow
Their views aren't necessarily our views. :wink:
- The Institute for Ethical AI & Machine Learning - A UK-based research center that performs research into ethical AI/ML, which frequently involves XAI.
- Tim Miller - One of the preeminent researchers in XAI.
- Rich Caruana - The man behind Explainable Boosting Machines.
Who else should we be following!?
Contributing
Contributions of any kind welcome, just follow the guidelines!
