AI.md 32 KB

AI :: Algorithms, Data Mining, Clustering, Data Structures (the CS bits of Mathematics), HMM, Machine Learning, Neural networks, NLP, Roboitics, SR/Voice tools,...


ALGORITHMS

Association Rule

  • ARules.jl :: Julia package for Association Rule Learning algorithms.

Checksum

  • CRC.jl :: This is a Julia module for calculating Cyclic Redundancy Checksums (CRCs).
  • CRC32.jl :: 32-bit cyclic redundancy check (CRC-32) checksum implementation.
  • GutFlora.jl :: Contains a pure-Julia implementation of the MD5 checksum, available as md5(::IO) or md5file("file").

Collaborative Filtering

  • RecSys.jl :: An implementation of the algorithm from "Yunhong Zhou, Dennis Wilkinson, Robert Schreiber and Rong Pan. Large-Scale Parallel Collaborative Filtering for the Netflix Prize. Proceedings of the 4th international conference on Algorithmic Aspects in Information and Management. Shanghai, China pp. 337-348, 2008".

Scheduling Algorithm

  • ComputeFramework.jl :: Hierarchical Scheduling of DAG Structured Computations.
  • HClust.jl :: Hierarchical Clustering for Julia, similar to R's hclust().

Quantum

  • Hadamard.jl :: Fast multidimensional Walsh-Hadamard transforms.

Pattern Matching

  • AhoCorasick.jl :: Julia implementation of the Aho-Corasick algorithm for fast string searching.
  • bfs.jl :: Breadth First Search implementation in Julia.
  • BlossomV.jl :: An interface for the Blossom V perfect matching algorithm.
  • dfs.jl :: Depth First Search.
  • ExpressionMatch.jl :: A small library designed to help macro writers deconstruct Julia expressions in a more declarative way without having to know in great detail how syntax is represented internally.
  • JellyFish.jl :: Port of the jellyfish string comparison library.
  • Loess.jl :: is a loess implementation based on the fast kd-tree based approximation algorithm, a space-partitioning data structure for organizing points in a k-dimensional space.
  • Match.jl :: Advanced Pattern Matching for Julia.
  • NearestNeighbors.jl :: Data structures for nearest neighbor search.
  • ReverseRegexes.jl :: Adds functionality to reverse-search strings with regexes

Time

  • LabelPropagation.jl :: A fast, nearly linear time algorithm for detecting communtiy structure in networks.
RESOURCES
  • algo-book-julia :: Snippets from Problem Solving with Algorithms and Data Structures in Julia.
  • study :: A study of interesting algorithms.

COMPUTATIONAL PROBLEMS

NP-complete

SAT

  • dReal.jl :: Nonlinear SMT solving using dReal.
  • PicoSAT.jl :: Provides Julia bindings to the popular SAT solver picosat by Armin Biere. It is based off the Python pycosat and Go pigosat bindings written by Ilan Schnell and Willam Schwartz.

DATA STRUCTURES

Arrays-Graphs

  • AffineTransforms.jl :: A new package for creating and using affine transformations. Utilities for conversion among different representations (mostly between rotation matrices and axis-angle) are included.
  • ArrayViews.jl :: A Julia package to explore a new system of array views.
  • ArrayViewsAPL.jl :: Generic array-view type with APL indexing semantics.
  • Arrowhead.jl :: Arrowhead and Diagonal-plus-rank-one Eigenvalue Solvers.
  • AxisArrays.jl :: Performant arrays where each dimension can have a named axis with values.
  • BGraph.jl :: An adjacency list that uses typed properties for vertices, edges, and graphs.
  • bloom.jl :: Bloom filter implementation in Julia.
  • BloomFilters.jl :: are a probabilistic data structure that can be used to test the inclusion and exclusion of items in a list.
  • Blox.jl :: Views of concatenated AbstractArrays in Julia.
  • Brim.jl :: BRIM modularity - Various ways to optimize the modularity of bipartite networks using BRIM in Julia.
  • DeepReshapes.jl :: Reshape arbitrarily nested structures of Tuples and Arrays in Julia.
  • EvolvingGraphs.jl :: Dynamic Graph Analysis Framework in Julia.
  • FArrayMod.jl :: provides the ability to use arbitrary starting indices for arrays in Julia programming language.
  • FingerTrees.jl :: A Finger Tree is a functional data structure that can give an amortized constant time access to the "fingers" (leaves) of the tree where the data is stored, while the internal nodes are labeled in some way as to provide the functionality of the particular data structure being implemented.
  • FunctionalCollections.jl :: Functional and and persistent data structures for Julia.
  • FunctionalData.jl :: Functional, efficient data manipulation framework.
  • Graphs.jl :: a package for working with graph types and algorithms in Julia.
  • GraphLayout.jl :: Graph layout algorithms in pure Julia.
  • GraphicalModels.jl :: Data structures and parsing tools for representing graphical models in Julia.
  • HMat.jl :: Hierarchical Matrix.
  • ImmutableArrays.jl :: Statically-sized immutable vectors and matrices.
  • IndexedArrays.jl :: A data structure that acts like a Vector of unique elements allowing a quick lookup of the index of any vector element in the array.
  • InfoTheory.jl :: Estimating information theoretic measures (entropy, mutual information etc) from data.
  • InvariantEnsembles.jl :: Sample random unitary invariant ensembles.
  • JudyDicts.jl :: Judy Array for Julia.
  • JSparse.jl :: A Julia implementation of functions in the CSparse and CXSparse libraries developed by Tim Davis.
  • julia-delayed-matrix :: Delayed processing of Vector / Matrix expression in Julia with various backends.
  • L1DecisionTree.jl
  • LiftedHierarchies.jl.
  • LightGraphs.jl :: An optimized simple graphs package designed for fast analysis using standard functions that seeks to mimic the functionality of established packages like NetworkX, but with better performance.
  • Lists.jl :: Singly linked list and doubly linked list for Julia.
  • LSH.jl :: Locality Sensitive Hashing functions.
  • MatrixNetworks.jl :: Graph and Network algorithms.
  • MatrixDepot.jl :: A multi-language collection of test matrices for Julia. Documentation
  • MinimalPerfectHashes.jl :: An implementation of minimal perfect hash function generation as described in Czech et. al. 1992. http://bit.ly/137iukS
  • Multifrontal.jl :: Multifrontal direct solvers for sparse matrices.
  • Named.jl :: Julia named index and named vector types.
  • NamedArrays.jl :: Julia type that implements a drop-in replacement of Array with named dimensions and Dict-type indexes.
  • NamedAxesArrays.jl :: Performant arrays where each axis can be named.
  • NamedTuples.jl :: Provides a high performance implementation of named tuples for Julia (cf named tuples in python).
  • Networks.jl :: A library for working with Graphs in Julia.
  • OffsetArrays.jl :: Negative Indexing - it provides the ability to use arbitrary starting indices for arrays in Julia. The main purpose of this package is to simplify translation from Fortran codes intensively using Fortran arrays with negative and zero starting indices, such as the codes accompanying the book Numerical Solution of Hyperbolic Partial Differential Equations by prof. John A. Trangenstein.
  • ParallelSparseMatMul.jl :: A Julia library for parallel sparse matrix multiplication using shared memory.
  • PDMats.jl :: Uniform Interface for positive definite matrices of various structures.
  • PETSc.jl :: sparse-matrix interface for the Julia language.
  • PositiveFactorizations.jl :: Positive-definite "approximations" to matrices.
  • PropertyGraph.jl :: A Julia package for constructing, creating and querying graph data structures.
  • QuickStructs.jl :: Several data structures with goals of O(1) for important operations.
  • RandomBandedMatrices.jl.
  • RandomForestBehaviors.jl :: Microscopic driving models based on random forests.
  • RedBlackTrees.jl :: A red–black self-balancing binary search tree in Julia. REF: http://en.wikipedia.org/wiki/Red_black_trees
  • RepresentationTheory.jl :: Kronecker product of Sn.
  • RingBuffer.jl :: Julia ring buffer implementation for buffered IO.
  • RobustShortestPath.jl :: Robust Shortest Path Finder.
  • rsk :: Code for exploring the Robinson–Schensted–Knuth correspondence.
  • Series.jl :: Series data structure in Julia.
  • SFrames.jl :: Wrapper around the open-source components of Graphlab.
  • Showoff.jl :: Nicely format an array of n things for tables and plots.
  • SimpleGraphs.jl :: A module for working with simple graphs (no loops, no multiple edges, no directed edges).
  • Sims.jl :: Non-causal, equation-based modeling in Julia.
  • SizeArrays.jl :: Julia array parametrised by size instead of dimension.
  • SoArrays.jl :: Structures of Arrays that behave like Arrays of Structures.
  • SparseData.jl :: A Julia package to support working with sparse data sets (e.g. text corpus).
  • SparseFactorModels.jl :: Estimate factor models on sparse datasets.
  • SparseGrids.jl.
  • SpatialGraphs.jl
  • SuffixArrays.jl :: Native Julia suffix array implementation. Derived from sais.
  • TimeArrays.jl :: A temporary repo exploring the union of SeriesPair arrays into multicolumn arrays with similar behavior.
  • Trie.jl :: Implementation of the trie data structure.
  • WoodburyMatrices.jl :: Library support for the Woodbury matrix identity.
  • WSMP.jl :: Interface to the Watson Sparse Matrix Package.

Publications

RESOURCES

HMM

  • hmm.jl :: Julia implementation of Hidden Markov Models.
  • HMM.jl :: A module for fitting Hidden Markov Models in Julia.
  • Lora.jl :: is a generic engine for implementing Bayesian statistical models using Markov Chain Monte Carlo (MCMC) methods.
  • Mamba.jl :: Markov chain Monte Carlo simulation toolkit for julia.
  • Markov.jl :: Trial Markov package.
  • MDP.jl (by @adityam) :: Markov Decision Processes algorithms for Julia.
  • MDP.jl (by @khadiwala) :: Markov Decision Processes in Julia.
  • Pagerank.jl :: An experiment in pagerank on graphs in the order of billions of edges - Currently tested with over half a billion edges.

MACHINE LEARNING

Machine learning and statistics are closely related fields, so do check out the Statistics page for more packages.

  • BackpropNeuralNet.jl :: A neural network in Julia.
  • BNMF.jl :: Gamma Process Non-negative Matrix Factorization (GaP-NMF).
  • ConfidenceWeighted.jl :: Confidence weighted, a machine learning algorithm.
  • Contingency.jl :: Assorted techniques for the purpose of enabling automated machine learning.
  • Clustering.jl :: Basic functions for clustering data ==> k-means, dp-means, etc..
  • DAI.jl :: A julia binding to the C++ discrete approximate inference library for graphical models: libDAI.
  • DecisionTree.jl.
  • DecisionTrees.jl.
  • DeepQLearning.jl :: An implementation of DeepMind's Deep Q Learning algorithm described in "Playing Atari with Deep Reinforcement Learning".
  • Discretizers.jl :: A package to support discretization methods and mapping functions for data discretization and label maps.
  • EGR.jl :: The Stochastic Gradient (SG) algorithm for machine learning.
  • ELM.jl :: Extreme Learning Machines are a variant of Single-Hidden Layer Feedforward Networks (SLFNs) with a significant departure as their weights aren't iteratively tuned. This boosts the speed of neurals nets heavily.
  • FeatureSelection.jl :: Common measures and algorithms for feature selection.
  • Flimsy.jl :: Gradient based Machine Learning for Julia.
  • FunctionalDataUtils.jl :: Utility functions for the FunctionalData package, mainly from the area of computer vision / machine learning.
  • GURLS.jl :: A pure Julia port of the GURLS supervised learning library.
  • Glmnet.jl :: Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet.
  • HopfieldNets.jl :: Discrete and continuous Hopfield networks in Julia.
  • HSIC.jl :: Julia implementations of the Hilbert-Schmidt Independence Criterion (HSIC).
  • KaggleDigitRecognizer.jl :: Julia code for Kaggle's Digit Recognizer competition.
  • KDTrees.jl :: KD Trees.
  • Kernels.jl :: A Julia package for Mercer kernels and Gramian matrix calculation/approximation functions used in kernel methods of machine learning.
  • kNN.jl :: The k-Nearest Neighbors algorithm in Julia.
  • KSVM.jl by @remusao :: Kernel Support Vector Machine (SVM) written in Julia.
  • KSVM.jl by @Evizero :: Support Vector Machines in pure Julia.
  • Learn.jl :: Base framework library for machine learning packages.
  • LearnBase.jl :: Abstractions for Julia Machine Learning Packages.
  • liblinear.jl :: Liblinear binding to Julia.
  • LIBSVM.jl :: Julia bindings for LIBSVM.
  • NMF.jl :: A Julia package for non-negative matrix factorization (NMF).
  • MachineLearning.jl :: is a Machine Learning library package that consolidates common machine learning algorithms written in pure Julia and presents a consistent API.
  • Milk.jl :: Machine Learning Kit.
  • MLKernels.jl :: Mercer kernels and Gramian matrix calculation/approximation.
  • Mocha.jl :: A Deep Learning framework for Julia, inspired by the C++ Deep Learning framework Caffe.
  • MochaTheano.jl :: Allow use of Theano for automatic differentiation within Mocha, via PyCall.
  • Ollam.jl :: OLLAM = Online Learning of Linear Adaptatable Models.
  • OnlineAI.jl :: Machine learning for sequential/streaming data.
  • Orchestra.jl :: Heterogeneous ensemble learning package for the Julia programming language.
  • RegERMs.jl :: A package implementing several machine learning algorithms in a regularised empirical risk minimisation framework (SVMs, LogReg, Linear Regression) in Julia.
  • SALSA.jl :: _S_oftware Lab for _A_dvanced Machine _L_earning and _S_tochastic _A_lgorithms is a native Julia implementation of the well known stochastic algorithms for linear and non-linear Support Vector Machines.
  • SimpleML.jl :: Textbook implementations of some Machine Learning Algorithms in Julia.
  • SFA.jl :: Implementation of the standard SFA (Slow Feature Analysis) algorithm (both linear and non-linear signal expansion) in Julia.
  • SoftConfidenceWeighted.jl :: Exact Soft Confidence-Weighted Learning.
  • Strada.jl :: A deep learning library for Julia based on Caffe.
  • SupervisedLearning.jl :: Front-end interface for supervised machine learning.
  • SVMLightLoader.jl :: Loader of svmlight / liblinear format files.
  • TSVD.jl :: Truncated singular value decomposition with partial reorthogonalization.
  • YCaret.jl :: Machine learning utility functions in Julia.

Org-JuliaML

  • ValueHistories.jl :: Utilities to efficiently track learning curves or other optimization information.
Resources

NEURAL NETWORKS

  • ANN.jl :: Artifical Neural Networks.
  • Boltzmann.jl :: Restricted Boltzmann Machines and Deep Belief Networks in Julia
  • FANN.jl :: A Julia wrapper for the Fast Artificial Neural Network Library (FANN).
  • hinton.jl :: Create hinton diagrams in Julia. Hinton diagrams are used to visualize weight matrices in neural networks.
  • Julia_Neural_Network :: Basic Neural Network written in JuliaLang.
  • KUnet.jl :: Neural network code based on Julia and CUDA.
  • mlpnnets.jl :: Feed-forward MLP neural network implementation.
  • MultiLabelNeuralNetwork.jl :: A simple feed-forward neural network for multi-label classification.
  • neural.jl :: is a Julia implementation of a neural network, based on Sergio Fierens Ruby version.
  • NeuralNets.jl :: Generic artificial neural networks in Julia.
  • neuralnetwork.jl :: is an implementation of label neural network originally written for MATLAB/Octave by Andrew Ng for Coursera Machine Learning Class.
  • NeuralNetworks.jl :: Various functions for Neural Networks implemented in Julia.
  • RecurrentNN.jl :: Deep RNN and LSTM in Julia.
  • RNN.jl :: Recurrent Neural Networks.
  • SimpleNets :: Simple neural nets implementions in Julia.
  • SpikeNet.jl :: A spiking neural network simulator written in Julia.
  • StackedNets.jl :: A simple interface to "deep" stacks of neural network units that can be trained using gradient descent over defined error measures.

NLP

Japanese

  • MeCab.jl :: Julia binding of Japanese morphological analyzer MeCab.
Resources
  • Text-Benchmarks :: Comparing Python v. Clojure v. Julia performance in text-processing and dynamic collections.

SPEECH RECOGNITION

  • MelGeneralizedCepstrums.jl :: It provides a mel generalized cepstrum analysis for spectrum envelope estimation, which includes linear predicition, mel-cepstrum, generalized cepstrum and mel-generalized cepstrum analysis for Julia.
  • SpeechBase.jl.
  • SPTK.jl :: A Julia wrapper for the Speech Signal Processing Toolkit (SPTK), based on the modified version of SPTK.
  • SynthesisFilters.jl :: Speech Synthesis Filters.
  • WORLD.jl :: A Julia wrapper for WORLD - a high-quality speech analysis, modification and synthesis system. WORLD provides a way to decompose a speech signal into: Fundamental frequency (F0), spectral envelope, excitation signal (or aperiodicy used in TANDEM-STRAIGHT), and re-synthesize a speech signal from these paramters. See here for the original WORLD.