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 say that “this library is not maintained”.
- Not committed for long time (2~3 years).
For a list of free machine learning books available for download, go here.
For a list of free-to-attend meetups and local events, go here.
Table of Contents
- APL
- C
- C++
- Common Lisp
- Clojure
- Elixir
- Erlang
- Go
- Haskell
- Java
- Javascript
- Julia
- Lua
- Matlab
- .NET
- Objective C
- OCaml
- PHP
- Python
- Ruby
- Rust
- R
- SAS
- Scala
- Swift
- TensorFlow
- Credits
APL
General-Purpose Machine Learning
- naive-apl - Naive Bayesian Classifier implementation in APL
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 recomender system based upon scikit-learn algorithms.
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 Matlab toolbox
Speech Recognition
- HTK -The Hidden Markov Model Toolkit (HTK) is a portable toolkit for building and manipulating hidden Markov models.
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
- OpenCV - OpenCV has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
- VIGRA - VIGRA is a generic cross-platform C++ computer vision and machine learning library for volumes of arbitrary dimensionality with Python bindings.
General-Purpose Machine Learning
- BanditLib - A simple Multi-armed Bandit library.
- Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind. [DEEP LEARNING]
- 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]
- CXXNET - Yet another deep learning framework with less than 1000 lines core code [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.
- Disrtibuted 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.
- encog-cpp
- Fido - A highly-modular C++ machine learning library for embedded electronics and robotics.
- igraph - General purpose graph library
- Intel(R) DAAL - 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.
- 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
- Regularized Greedy Forest - Regularized greedy forest (RGF) tree ensemble learning method.
- 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.
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.
- CRFsuite - CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data.
- 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 objected-oriented framework that facilitates the integration of probabilistic models for sequences over a user defined alphabet.
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
- cl-libsvm - Wrapper for the libsvm support vector machine library
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
- Touchstone - Clojure A/B testing library
- Clojush - The Push programming language and the PushGP genetic programming system implemented in Clojure
- Infer - Inference and machine learning in clojure
- Clj-ML - A machine learning library for Clojure built on top of Weka and friends
- Encog - Clojure wrapper for Encog (v3) (Machine-Learning framework that specializes in neural-nets)
- Fungp - A genetic programming library for Clojure
- Statistiker - Basic Machine Learning algorithms in Clojure.
- clortex - General Machine Learning library using Numenta’s Cortical Learning Algorithm
- comportex - Functionally composable Machine Learning library using Numenta’s Cortical Learning Algorithm
- cortex - Neural networks, regression and feature learning in Clojure.
- lambda-ml - Simple, concise implementations of machine learning techniques and utilities in Clojure.
Data Analysis / Data Visualization
- Incanter - Incanter is a Clojure-based, R-like platform for statistical computing and graphics.
- PigPen - Map-Reduce for Clojure.
- Envision - Clojure Data Visualisation library, based on Statistiker and D3
Elixir
General-Purpose Machine Learning
- Simple Bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
Natural Language Processing
- Stemmer - An English (Porter2) stemming implementation in Elixir.
Erlang
General-Purpose Machine Learning
- Disco - Map Reduce in Erlang
Go
Natural Language Processing
- go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm.
- paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm.
- snowball - Snowball Stemmer for Go.
- go-ngram - In-memory n-gram index with compression.
General-Purpose Machine Learning
- gago - Multi-population, flexible, parallel genetic algorithm.
- Go Learn - Machine Learning for Go
- go-pr - Pattern recognition package in Go lang.
- go-ml - Linear / Logistic regression, Neural Networks, Collaborative Filtering and Gaussian Multivariate Distribution
- bayesian - Naive Bayesian Classification for Golang.
- go-galib - Genetic Algorithms library written in Go / golang
- Cloudforest - Ensembles of decision trees in go/golang.
- gobrain - Neural Networks written in go
- GoNN - GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
- go-mxnet-predictor - Go binding for MXNet c_predict_api to do inference with pre-trained model
Data Analysis / Data Visualization
- go-graph - Graph library for Go/golang language.
- SVGo - The Go Language library for SVG generation
- RF - Random forests implementation in Go
Haskell
General-Purpose Machine Learning
- haskell-ml - Haskell implementations of various ML algorithms.
- HLearn - a suite of libraries for interpreting machine learning models according to their algebraic structure.
- hnn - Haskell Neural Network library.
- hopfield-networks - Hopfield Networks for unsupervised learning in Haskell.
- caffegraph - A DSL for deep neural networks
- LambdaNet - Configurable Neural Networks in Haskell
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.
- 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
- Stanford Topic Modeling Toolbox - Topic modeling tools to social scientists and others who wish to perform analysis on datasets
- 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.
- 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.
- ClearNLP - The ClearNLP 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. This project is under the Apache 2 license.
- 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-utilities
which provides a set of NLP-friendly data structures and a number of NLP-related utilities that support writing NLP applications, running experiments, etc,illinois-edison
a 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.
- 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
- java-deeplearning - Distributed Deep Learning Platform for Java, Clojure,Scala
- 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
- 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.
- SmileMiner - Statistical Machine Intelligence & Learning Engine
- SystemML - flexible, scalable machine learning (ML) language.
- WalnutiQ - object oriented model of the human brain
- 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.
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
- 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
Deep Learning
- Deeplearning4j - Scalable deep learning for industry with parallel GPUs
Javascript
Natural Language Processing
- Twitter-text - A JavaScript implementation of Twitter’s text processing library
- NLP.js - NLP utilities in javascript and coffeescript
- natural - General natural language facilities for node
- Knwl.js - A Natural Language Processor in JS
- Retext - Extensible system for analyzing and manipulating natural language
- TextProcessing - Sentiment analysis, stemming and lemmatization, part-of-speech tagging and chunking, phrase extraction and named entity recognition.
- NLP Compromise - Natural Language processing in the browser
Data Analysis / Data Visualization
- D3.js
- High Charts
- NVD3.js
- dc.js
- chartjs
- dimple
- amCharts
- D3xter - Straight forward plotting built on D3
- statkit - Statistics kit for JavaScript
- datakit - A lightweight framework for data analysis in JavaScript
- science.js - Scientific and statistical computing in JavaScript.
- Z3d - Easily make interactive 3d plots built on Three.js
- 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.
- ZingChart- library written on Vanilla JS for big data visualization.
- cheminfo - Platform for data visualization and analysis, using the visualizer project.
General-Purpose Machine Learning
- Convnet.js - ConvNetJS is a Javascript library for training Deep Learning models[DEEP LEARNING]
- Clusterfck - Agglomerative hierarchical clustering implemented in Javascript for Node.js and the browser
- Clustering.js - Clustering algorithms implemented in Javascript for Node.js and the browser
- Decision Trees - NodeJS Implementation of Decision Tree using ID3 Algorithm
- DN2A - Digital Neural Networks Architecture
- figue - K-means, fuzzy c-means and agglomerative clustering
- Node-fann - FANN (Fast Artificial Neural Network Library) bindings for Node.js
- Kmeans.js - Simple Javascript implementation of the k-means algorithm, for node.js and the browser
- LDA.js - LDA topic modeling for node.js
- Learning.js - Javascript implementation of logistic regression/c4.5 decision tree
- Machine Learning - Machine learning library for Node.js
- machineJS - Automated machine learning, data formatting, ensembling, and hyperparameter optimization for competitions and exploration- just give it a .csv file!
- mil-tokyo - List of several machine learning libraries
- Node-SVM - Support Vector Machine for nodejs
- Brain - Neural networks in JavaScript [Deprecated]
- Bayesian-Bandit - Bayesian bandit implementation for Node and the browser.
- 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.
- kalman - Kalman filter for Javascript.
- shaman - node.js library with support for both simple and multiple linear regression.
- ml.js - Machine learning and numerical analysis tools for Node.js and the Browser!
- 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.
Misc
- sylvester - Vector and Matrix math for JavaScript.
- 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.
- GreatCircle - Library for calculating great circle distance.
Julia
General-Purpose Machine Learning
- MachineLearning - Julia Machine Learning library
- 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)
- Local Regression - Local regression, so smooooth!
- Naive Bayes - Simple Naive Bayes implementation in Julia
- Mixed Models - A Julia package for fitting (statistical) mixed-effects models
- Simple MCMC - basic mcmc sampler implemented in Julia
- Distance - Julia module for Distance evaluation
- Decision Tree - Decision Tree Classifier and Regressor
- Neural - A neural network in Julia
- MCMC - MCMC tools for Julia
- Mamba - Markov chain Monte Carlo (MCMC) for Bayesian analysis in Julia
- GLM - Generalized linear models in Julia
- Online Learning
- GLMNet - Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet
- Clustering - Basic functions for clustering data: k-means, dp-means, etc.
- SVM - SVM’s for Julia
- Kernal Density - Kernel density estimators for julia
- Dimensionality Reduction - Methods for dimensionality reduction
- NMF - A Julia package for non-negative matrix factorization
- ANN - Julia artificial neural networks
- Mocha - Deep Learning framework for Julia inspired by Caffe
- 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
Natural Language Processing
- Topic Models - TopicModels for Julia
- Text Analysis - Julia package for text analysis
Data Analysis / Data Visualization
- Graph Layout - Graph layout algorithms in pure Julia
- Data Frames Meta - Metaprogramming tools for DataFrames
- Julia Data - library for working with tabular data in Julia
- 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
- 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
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.
- autograd - Autograd automatically differentiates native Torch code. Inspired by the original Python version.
- graph - Graph package for Torch
- randomkit - Numpy’s randomkit, wrapped for Torch
- 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.
- 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).
- manifold - A package to manipulate manifolds
- svm - Torch-SVM library
- lbfgs - FFI Wrapper for liblbfgs
- vowpalwabbit - An old vowpalwabbit interface to torch.
- 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.
- sphagetti - Spaghetti (sparse linear) module for torch7 by @MichaelMathieu
- LuaSHKit - A lua wrapper around the Locality sensitive hashing library SHKit
- kernel smoothing - KNN, kernel-weighted average, local linear regression smoothers
- 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.
- 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.
- saliency - code and tools around integral images. A library for finding interest points based on fast integral histograms.
- stitch - allows us to use hugin to stitch images and apply same stitching to a video sequence
- sfm - A bundle adjustment/structure from motion package
- fex - A package for feature extraction in Torch. Provides SIFT and dSIFT modules.
- OverFeat - A state-of-the-art generic dense feature extractor
- Numeric Lua
- Lunatic Python
- SciLua
- Lua - Numerical Algorithms
- Lunum
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)
- Music Tagging - Music Tagging scripts for torch7
- 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 - An 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]
- t-Distributed Stochastic Neighbor Embedding - t-Distributed Stochastic Neighbor Embedding (t-SNE) is a (prize-winning) technique for dimensionality reduction that is particularly well suited for the visualization of high-dimensional datasets.
- Spider - The spider is intended to be a complete object orientated environment for machine learning in Matlab.
- LibSVM - A Library for Support Vector Machines
- 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.
Data Analysis / Data Visualization
- matlab_gbl - MatlabBGL is a Matlab package for working with graphs.
- gamic - 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 e 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.
- Vulpes - Deep belief and deep learning implementation written in F# and leverages CUDA GPU execution with Alea.cuBase.
- 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.
- 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 feed back. The chat bots can even scrape the internet for information to return in their output as well as to use for learning.
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 every day 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 network. It is built on top of the Apple’s Accelerate Framework, using vectorized operations and hardware acceleration if available.
- 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 neural network ( Input Layer, Hidden Layer and Output Layer ) and it named Back Propagation Neural Network (BPN). This network can be used in products recommendation, user behavior analysis, data mining and data analysis.
- Multi-Perceptron-NeuralNetwork - it implemented multi-perceptrons neural network (ニューラルネットワーク) based on Back Propagation Neural Network (BPN) and designed unlimited-hidden-layers.
- KRHebbian-Algorithm - It is a non-supervisor and self-learning algorithm (adjust the weights) in neural network of Machine Learning.
- KRKmeans-Algorithm - It implemented K-Means the clustering and classification algorithm. It could be used in data mining and image compression.
- 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.
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.
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.
Python
Computer Vision
- Scikit-Image - A collection of algorithms for image processing 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
Natural Language Processing
- 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.
- 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.
- genius - A Chinese segment base on Conditional Random Field.
- KoNLPy - A Python package for Korean natural language processing.
- nut - Natural language Understanding Toolkit
- 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)
- 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.
- 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, constiuency parser, and dependency parser for English.
- colibri-core - Python binding to C++ library for extracting and working with 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
- 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
General-Purpose Machine Learning
- auto_ml - Automated machine learning pipelines for analytics and production. Handles some standard feature engineering, feature selection, model selection, model tuning, ensembling, and advanced scoring, in addition to logging output for analysts trying to understand their datasets.
- 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
- 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.
- SimpleAI Python implementation of many of the artificial intelligence algorithms described on 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.
- keras - Modular neural network library based on Theano.
- Lasagne - Lightweight library to build and train neural networks in Theano.
- hebel - GPU-Accelerated Deep Learning Library in Python.
- Chainer - Flexible neural network framework
- gensim - Topic Modelling for Humans.
- topik - Topic modelling toolkit
- PyBrain - Another Python Machine Learning Library.
- Brainstorm - Fast, flexible and fun neural networks. This is the successor of PyBrain.
- Crab - A flexible, fast recommender engine.
- python-recsys - A Python library for implementing a Recommender System.
- thinking bayes - Book on Bayesian Analysis
- Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
- Bolt - Bolt Online Learning Toolbox
- CoverTree - Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree
- nilearn - Machine learning for NeuroImaging in Python
- imbalanced-learn - Python module to perform under sampling and over sampling with various techniques.
- Shogun - The Shogun Machine Learning Toolbox
- Pyevolve - Genetic algorithm framework.
- Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
- breze - Theano based library for deep and recurrent neural networks
- 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.
- mrjob - A library to let Python program run on Hadoop.
- SKLL - A wrapper around scikit-learn that makes it simpler to conduct experiments.
- neurolab - https://github.com/zueve/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.
- Pebl - Python Environment for Bayesian Learning
- 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
- yahmm - 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
- 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]
- 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
- skflow - Simplified interface for TensorFlow, mimicking Scikit Learn.
- 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.
- 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.
- rgf_python - Python bindings for Regularized Greedy Forest (Tree) Library.
- gym - OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms.
- skbayes - Python package for Bayesian Machine Learning with scikit-learn API
Data Analysis / Data Visualization
- SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
- NumPy - A fundamental package for scientific computing with Python.
- Numba - Python JIT (just in time) complier to LLVM aimed at scientific Python by the developers of Cython and 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.
- Open Mining - Business Intelligence (BI) in Python (Pandas web interface)
- 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.
- vincent - 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.
- 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
- 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.
- NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool!
- SparklingPandas Pandas on PySpark (POPS)
- Seaborn - A python visualization library based on matplotlib
- bqplot - An API for plotting in Jupyter (IPython)
- pastalog - Simple, realtime visualization of neural network training performance.
- caravel - 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.
Misc Scripts / iPython Notebooks / Codebases
- BioPy - Biologically-Inspired and Machine Learning Algorithms in Python.
- 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
Neural networks
- Neural networks - 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.
- Data Driven Code - Very simple implementation of neural networks for dummies in python without using any libraries, with detailed comments.
Kaggle Competition Source Code
- 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
Ruby
Natural Language Processing
- Treat - Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby
- Ruby Linguistics - Linguistics is a framework for building linguistic utilities for Ruby objects in any language. It includes a generic language-independent front end, a module for mapping language codes into language names, and a module which contains various English-language utilities.
- Stemmer - Expose libstemmer_c to Ruby
- Ruby Wordnet - This library is a Ruby interface to WordNet
- Raspel - raspell is an interface binding for ruby
- 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
- Ruby Machine Learning - Some Machine Learning algorithms, implemented in Ruby
- Machine Learning Ruby
- jRuby Mahout - JRuby Mahout is a gem that unleashes the power of Apache Mahout in the world of JRuby.
- 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
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
- ruby-plot - gnuplot wrapper for ruby, especially for plotting roc curves into svg files
- plot-rb - A plotting library in Ruby built on top of Vega and D3.
- scruffy - A beautiful graphing toolkit for Ruby
- SciRuby
- Glean - A data management tool for humans
- Bioruby
- Arel
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
- 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.
R
General-Purpose Machine Learning
- ahaz - ahaz: Regularization for semiparametric additive hazards regression
- arules - arules: Mining Association Rules and Frequent Itemsets
- biglasso - biglasso: Extending Lasso Model Fitting to Big Data in R
- bigrf - bigrf: Big Random Forests: Classification and Regression Forests for Large Data Sets
- bigRR - bigRR: Generalized Ridge Regression (with special advantage for p >> n cases)
- 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.
- 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
- 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
- GAMBoost - GAMBoost: Generalized linear and additive models by likelihood based boosting
- 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
- 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
- Introduction to Statistical Learning
- ipred - ipred: Improved Predictors
- kernlab - kernlab: Kernel-based Machine Learning Lab
- klaR - klaR: Classification and visualization
- lars - lars: Least Angle Regression, Lasso and Forward Stagewise
- 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
- mboost - mboost: Model-Based Boosting
- medley - medley: Blending regression models, using a greedy stepwise approach
- mlr - mlr: Machine Learning in R
- mvpart - mvpart: Multivariate partitioning
- ncvreg - ncvreg: Regularization paths for SCAD- and MCP-penalized regression models
- nnet - nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models
- oblique.tree - oblique.tree: Oblique Trees for Classification Data
- pamr - pamr: Pam: prediction analysis for microarrays
- party - party: A Laboratory for Recursive Partytioning
- partykit - partykit: A Toolkit for Recursive Partytioning
- 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
- 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
- REEMtree - REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data
- relaxo - relaxo: Relaxed Lasso
- rgenoud - rgenoud: R version of GENetic Optimization Using Derivatives
- rgp - rgp: R genetic programming framework
- 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
- ROCR - ROCR: Visualizing the performance of scoring classifiers
- RoughSets - RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories
- 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
- SDDA - SDDA: Stepwise Diagonal Discriminant Analysis
- SuperLearner and subsemble - Multi-algorithm ensemble learning packages.
- svmpath - svmpath: svmpath: the SVM Path algorithm
- tgp - tgp: Bayesian treed Gaussian process models
- 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 Analysis / Data Visualization
- ggplot2 - A data visualization package based on the grammar of graphics.
SAS
General-Purpose Machine Learning
- 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.
High Performance Machine Learning
- High Performance Data Mining - Data mining and machine learning that creates deployable models using a GUI or code in an MPP environment, including Hadoop.
- High Performance Text Mining - Text mining using a GUI or code in an MPP environment, including Hadoop.
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.
- 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.
Data Analysis / Data Visualization
- 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
- simmer - Reduce your data. A unix filter for algebird-powered aggregation.
- 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.
- Wolfe Declarative Machine Learning
- 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
- Conjecture - Scalable Machine Learning in Scalding
- brushfire - Distributed decision tree ensemble learning in Scala
- ganitha - scalding powered machine learning
- 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.
Swift
General-Purpose Machine Learning
- Swift AI - Highly optimized artificial intelligence and machine learning library written in Swift.
- 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. - DeepLearningKit an Open Source Deep Learning Framework for Apple’s iOS, OS X and tvOS.
It currently allows using deep convolutional neural network models trained in Caffe on Apple operating systems. - 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..
TensorFlow
General-Purpose Machine Learning
- Awesome TensorFlow - A list of all things related to TensorFlow
Credits
- Some of the python libraries were cut-and-pasted from vinta
- The few go reference I found where pulled from this page
国内机器学习大牛
蔡登:http://www.cad.zju.edu.cn/home/dengcai/,Han Jiawei老师的学生,博士毕业后回浙大任教,也算是国内年轻一代的牛人了。
万小军:https://sites.google.com/site/wanxiaojun1979/,得翻墙才能看到主页。主要研究方向是文本挖掘和语义计算。自然语言方向好会议发了很多文章。
张磊:http://research.microsoft.com/en-us/um/people/leizhang/
李航:http://research.microsoft.com/en- us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究领域是信息检索,自然语言处理和统计学习。近年来,主要与人合作使用机器学习方法对信息检索中排序,相关性等问题的 研究。曾在人大听过一场他的讲座,对实际应用的问题抽象,转化和解决能力值得学习。
周志华:http://cs.nju.edu.cn/zhouzh/,是南京大学的杰青,机器学习和数据挖掘方面国内的领军人物,其好几个研究生都 进入了美国一流高校如uiuc,cmu等学习和深造。周教授在半监督学习,multi-label学习和集成学习方面在国际上有一定的影响力。另外,他也 是ACML的创始人。人也很nice,曾经发邮件咨询过一个naive的问题,周老师还在百忙之中回复了我,并对我如何发邮件给了些许建议。
杨强:http://www.cse.ust.hk/~qyang/,香港科技大学教 授,也是KDD 2012的会议主席,可见功力非同一般。杨教授是迁移学习的国际领军人物,曾经的中国第一位acm全球冠军上交的戴文渊硕士期间就是跟他合作发表了一系列 高水平的文章。还有,杨教授曾有一个关于机器学习和数据挖掘有意思的比喻:比如你训练一只狗,若干年后,如果它忽然有一天能帮你擦鞋洗衣服,那么这就是数 据挖掘;要是忽然有一天,你发现狗发装成一个老太婆消失了,那么这就是机器学习。
李建中:http://db.hit.edu.cn/jianzhongli/,哈工大和黑大共有教授,是分布式数据库的领军人物。近年来,其团队 在不确定性数据,sensor network方面也发表了一系列有名文章。李教授为人师表,教书育人都做得了最好,在圈内是让人称道的好老师和好学者。
张钹:http://www.csai.tsinghua.edu.cn/personal_homepage/zhang_bo/index.html 清华大学教授,中科院院士,。现任清华大学信息技术研究院指导委员会主任,微软亚洲研究院技术顾问等。主要从事人工智能、神经网络、遗传算法、智能机器 人、模式识别以及智能控制等领域的研究工作。在过去二十多年中,张钹教授系统地提出了问题求解的商空间理
论。近年来,他建立了神经与认知计算研究中心以及多媒体信息处理研究组。该研究组已在图像和视频的分析与检索方面取得一些重要研究成果。
刘铁岩:http://research.microsoft.com/en-us/people/tyliu/ MSRA研究主管,是learning to rank的国际知名学者。近年逐步转向管理,研究兴趣则开始关注计算广告学方面。
王海峰:http://ir.hit.edu.cn/~wanghaifeng/ 信息检索,自然语言处理,机器翻译方面的专家,ACL的副主席,百度高级科学家。近年,在百度主持研发了百度翻译产品。
何晓飞:http://people.cs.uchicago.edu/~xiaofei/ 浙江大学教授,多媒体处理,图像检索以及流型学习的国际领先学者。
朱军:http://www.ml-thu.net/~jun/ 清华大学副教授,机器学习绝对重量级新星。主要研究领域是latent variable models, large-margin learning, Bayesian nonparametrics, and sparse learning in high dimensions. 他也是今年龙星计划的机器学习领域的主讲人之一。
吴军:http://www.cs.jhu.edu/~junwu/ 腾讯副总裁,前google研究员。著名《数学之美》和《浪潮之巅》系列的作者。
张栋:http://weibo.com/machinelearning 前百度科学家和google研究员,机器学习工业界的代表人物之一。
戴文渊:http://apex.sjtu.edu.cn/apex_wiki/Wenyuan_Dai 现百度凤巢ctr预估组leader。前ACM大赛冠军,硕士期间一系列transfer learning方面的高水平论文让人瞠目结舌。
CS229: Machine Learning
如何学习机器学习的一点心得
结合自己的学习经历,总结一下如何学习机器学习。我自己的学习过程其实是非常混乱和痛苦的,一个人瞎搞现在也不知道入没入门。希望能对其他想自学机器学习而找不到方向的人有一点点帮助。
一、可以读读一些科普性的,综述性的东西。
南京大学周志华教授写的科普文章《机器学习和数据挖掘》还不错,对机器学习和数据挖掘的区别说的挺好。另外对机器学习的历史和前景做了说明。文章最后也给出了领域内比较重要的会议和期刊。
吴军写的数学之美(浪潮之巅也很赞)可能确切的说应该是搜索、自然语言处理、机器学习的一个综合性科普,但是机器学习本来就和这些领域有着很大的关联的,所以说对学习机器学习的人来说也是一个不错的入门科普。
二、可以了解下领域里面的牛人。曾经听香港科技大学的杨强教授在一个讲座上讲过这么一件事,他说如果面试一个学生,一个好的方法就是问他这个领域有哪些牛人,每个牛人的代表性工作是什么,这样可以检验一个人是否真正喜欢并关注这个方向。我觉得说得挺有道理。网上有人总结了一些牛人,当然这些总结都是个人观点,随便看看了解一下就行了。(注:下面的链接不一定是原始出处)
http://blog.sina.com.cn/s/blog_56f7cc3a0100qktd.html (国外的)
http://blog.sina.com.cn/s/blog_6a6b58ce01017jy3.html (国内的)
http://blog.csdn.net/yihaizhiyan/article/details/6795073 (这个有一些是机器视觉里的)
三、可以了解下领域的重要会议,前面提到的周的文章有提到,网上也有各种版本的分析,列两个
http://blog.csdn.net/blow_jj/article/details/2415305 (人工智能和机器学习的)
http://taoo.iteye.com/blog/1052495 (数据库和数据挖掘的)
四、可以系统的上一下机器学习的课程,Standford的Andrew Ng的机器学习课程很赞,网上有他的公开课视频,上他的课真是如沐春风,浑身通畅。
课程主页:
http://cs229.stanford.edu/ (里面有讲义,最好打印出来对照视频看)
网易公开课有中文字幕翻译的视频:
http://v.163.com/special/opencourse/machinelearning.html
这是在coursera项目中的版本,好像比网易的内容要多,起码多的有推荐算法的部分
https://class.coursera.org/ml/lecture/preview/index
五、可以系统的读一本机器学习的教材,系统的学习很重要。口碑最好的,我自己感觉写的最好的是 Christopher M. Bishop写的《pattern Recognition and Machine Learning》
六、对一些重要的经典的文章可以拜读一下,下面的这个资料列表可以参考
http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fsci.faq%2FNLP%2F1%2FM.1225371502.h0
在学习的过程中,手头有一本统计的参考书是必要的,当然还有利器google,不懂的概念随时可以查。
七、其实学习机器学习最重要的就是实践了,实践出真知。
机器学习经典书籍小结
机器学习经典书籍小结
转载本博客请注明链接:http://blog.csdn.net/xinzhangyanxiang/article/details/9069045
博客第一篇文章[1]是转载的,也算是开始写博客不经意的表露了自己对机器学习的兴趣吧!那篇文章总结了机器学习的一些经典算法的论文与数学基础理论的一些书籍,对于开始学习机器学习的话恐怕太过深入,正好最近在买书,看了很多经典书籍的总结与评论,我再拾人牙慧,稍稍总结一下吧。
先说一下我看过的和正在看的一些书吧!
《数学之美》;作者吴军大家都很熟悉。这本书主要的作用是引起了我对机器学习和自然语言处理的兴趣。里面以极为通俗的语言讲述了数学在这两个领域的应用。
《Programming Collective Intelligence》(中译本《集体智慧编程》);作者Toby Segaran也是《BeautifulData : The Stories Behind Elegant Data Solutions》(《数据之美:解密优雅数据解决方案背后的故事》)的作者。这本书最大的优势就是里面没有理论推导和复杂的数学公式,是很不错的入门书。目前中文版已经脱销,对于有志于这个领域的人来说,英文的pdf是个不错的选择,因为后面有很多经典书的翻译都较差,只能看英文版,不如从这个入手。还有,这本书适合于快速看完,因为据评论,看完一些经典的带有数学推导的书后会发现这本书什么都没讲,只是举了很多例子而已。
《Algorithms of the Intelligent Web》(中译本《智能web算法》);作者Haralambos Marmanis、Dmitry Babenko。这本书中的公式比《集体智慧编程》要略多一点,里面的例子多是互联网上的应用,看名字就知道。不足的地方在于里面的配套代码是BeanShell而不是python或其他。总起来说,这本书还是适合初学者,与上一本一样需要快速读完,如果读完上一本的话,这一本可以不必细看代码,了解算法主要思想就行了。
《统计学习方法》;作者李航,是国内机器学习领域的几个大家之一,曾在MSRA任高级研究员,现在华为诺亚方舟实验室。书中写了十个算法,每个算法的介绍都很干脆,直接上公式,是彻头彻尾的“干货书”。每章末尾的参考文献也方便了想深入理解算法的童鞋直接查到经典论文;本书可以与上面两本书互为辅助阅读。
《Machine Learning》(《机器学习》);作者TomMitchell[2]是CMU的大师,有机器学习和半监督学习的网络课程视频。这本书是领域内翻译的较好的书籍,讲述的算法也比《统计学习方法》的范围要大很多。据评论这本书主要在于启发,讲述公式为什么成立而不是推导;不足的地方在于出版年限较早,时效性不如PRML。但有些基础的经典还是不会过时的,所以这本书现在几乎是机器学习的必读书目。
《Mining of Massive Datasets》(《大数据》);作者Anand Rajaraman[3]、Jeffrey David Ullman,Anand是Stanford的PhD。这本书介绍了很多算法,也介绍了这些算法在数据规模比较大的时候的变形。但是限于篇幅,每种算法都没有展开讲的感觉,如果想深入了解需要查其他的资料,不过这样的话对算法进行了解也足够了。还有一点不足的地方就是本书原文和翻译都有许多错误,勘误表比较长,读者要用心了。
《Data Mining: Practical Machine Learning Tools and Techniques》(《数据挖掘:实用机器学习技术》);作者Ian H. Witten 、Eibe Frank是weka的作者、新西兰怀卡托大学教授。他们的《ManagingGigabytes》[4]也是信息检索方面的经典书籍。这本书最大的特点是对weka的使用进行了介绍,但是其理论部分太单薄,作为入门书籍还可,但是,经典的入门书籍如《集体智慧编程》、《智能web算法》已经很经典,学习的话不宜读太多的入门书籍,建议只看一些上述两本书没讲到的算法。
《机器学习及其应用2011》,周志华、杨强主编。来源于“机器学习及其应用研讨会”的文集。该研讨会由复旦大学智能信息处理实验室发起,目前已举办了十届,国内的大牛如李航、项亮、王海峰、刘铁岩、余凯等都曾在该会议上做过讲座。这本书讲了很多机器学习前沿的具体的应用,需要有基础的才能看懂。如果想了解机器学习研究趋势的可以浏览一下这本书。关注领域内的学术会议是发现研究趋势的方法嘛。
上面大多都是一些入门级的书籍,想要在这个领域深入下去,还需要深入的阅读一些经典书籍。看了很多推荐大牛推荐的书单,这里总结一下吧。
《Pattern Classification》(《模式分类》第二版);作者Richard O. Duda[5]、Peter E. Hart、David。模式识别的奠基之作,但对最近呈主导地位的较好的方法SVM、Boosting方法没有介绍,被评“挂一漏万之嫌”。
《Pattern Recognition And Machine Learning》;作者Christopher M. Bishop[6];简称PRML,侧重于概率模型,是贝叶斯方法的扛鼎之作,据评“具有强烈的工程气息,可以配合stanford 大学 Andrew Ng 教授的 Machine Learning 视频教程一起来学,效果翻倍。”
《The Elements of Statistical Learning : Data Mining, Inference, andPrediction》,(《统计学习基础:数据挖掘、推理与预测》第二版);作者RobertTibshirani、Trevor Hastie、Jerome Friedman。“这本书的作者是Boosting方法最活跃的几个研究人员,发明的Gradient Boosting提出了理解Boosting方法的新角度,极大扩展了Boosting方法的应用范围。这本书对当前最为流行的方法有比较全面深入的介绍,对工程人员参考价值也许要更大一点。另一方面,它不仅总结了已经成熟了的一些技术,而且对尚在发展中的一些议题也有简明扼要的论述。让读者充分体会到机器学习是一个仍然非常活跃的研究领域,应该会让学术研究人员也有常读常新的感受。”[7]
《Data Mining:Concepts andTechniques》,(《数据挖掘:概念与技术》第三版);作者(美)Jiawei Han[8]、(加)Micheline Kamber、(加)Jian Pei,其中第一作者是华裔。本书毫无疑问是数据挖掘方面的的经典之作,不过翻译版总是被喷,没办法,大部分翻译过来的书籍都被喷,想要不吃别人嚼过的东西,就好好学习英文吧。
一些引申链接:
http://blog.csdn.net/pongba/article/details/2915005
http://blog.csdn.net/caikehe/article/details/8496721
http://blog.chinaunix.net/uid-10314004-id-3594337.html
http://weibo.com/1657470871/zpZ87mhND?sudaref=www.zhizhihu.com
http://www.zhizhihu.com/html/y2012/4019.html
http://zinkov.com/posts/2012-10-04-ml-book-reviews/
几乎所有引申链接中都提到了上面我所提到的经典书籍。另外还有一些其他方面比如信息检索、人工智能还有数学基础方面的书籍。
有人推荐,学习机器学习的话可以先读《统计学习方法》和《统计学习基础》打底,这样就包含了大部分的算法,然后再深入研究某个算法。我觉得,我在上面列出的四本经典书籍都应该通读一遍。孔子云“学而不思则罔,思而不学则殆”,我认为,学习、思考、实践不可缺一,学习的同时要加强算法代码的实现和其他方面比如并行化、使用场景等的思考。
[1] http://blog.csdn.net/xinzhangyanxiang/article/details/7799997
[2] http://www.cs.cmu.edu/~tom/
[3] http://en.wikipedia.org/wiki/Anand_Rajaraman
[4] http://book.douban.com/subject/1511568/
[5] http://en.wikipedia.org/wiki/Richard_O._Duda
[6] http://en.wikipedia.org/wiki/Christopher_Bishop