Many ML algorithms are very suitable to write in J. I have written a few myself, which I will put on Github when I iron out some issues and clean it up since it is a mess at the moment - maybe this month or next. But having said that, I am definitely not an expert in ML (or J for that matter), and am more interested in understanding and building the algorithms than actually using them on real world data. From that point of view, J is great, because implementing a lot of the algorithms is essentially manipulating matrices, i.e. what J is built for. And even convolutions have their own inbuilt conjunction (;._3 or ;.3).
I noticed you have missed a few popular ML algorithms: SVM multi layer perceptron PCA SOM (kohonen nets) Gaussian Processes ... One issue that has been mentioned before is SVMs. These are somewhat popular, but difficult to write since a quadratic programming solver is necessary, and as far as I know nobody has written one in J. I have written a somewhat shabby convolutional net in J, (for 2D convolutions, i.e. image data). I could get a 90%ish accuracy rate with the MNIST dataset using my convnet... the downside being that it took over 15 hours to do the training (on a CPU obviously). I will add that to Github too, merely as a reference, or as something of interest. My current goal (I am just going through various ML algos and trying to implement them, for the sake of my own learning, not to solve any specific problem) is to write an LSTM network. I will, time permitting, add that to github too. It would be good to have a whole section of the Wiki devoted to ML in future. Other sources of information: This book is very good, better in hardback than reading online: http://www.deeplearningbook.org/ scikit-learn source code is very readable, if you know Python, and sometimes easily applicable to J. https://github.com/scikit-learn/scikit-learn I also found Hands on Machine Learning with Scikit-Learn and Tensorflow to be a very good book. Jon -------------------------------------------- On Fri, 3/16/18, Skip Cave <[email protected]> wrote: Subject: [Jprogramming] J for ML To: "[email protected]" <[email protected]> Date: Friday, March 16, 2018, 5:56 AM All, If J would like to stay relevant in today's programmimg world, providing J code for the most common machine learning and deep learning algorithms such as gradient decent, neural networks, word2vec etc. would likely attract some attention. Many of the basic ML algorithms are already published in J, but they are scattered in various locations on the J website and other places. Collecting them together in one place would help show J's relevance to the hot field of ML research. Here's a list of some of the most basic ML algorithms: Linear Regression Linear Regression w/ Gradient Decent Logistic Function Logistic Regression Linear Discriminant Analysis Gini Coefficient Classification and Regression Trees Naive Bayes Gaussian Gaussian Naive Bayes Nearest Neighbors Vector Quantization Support Vector Machines Bagged Decision Trees Adaptive Boosting Jason Brownlee, Ph.D. maintains a website focused on ML, called: "Machine Learning Mastery" https://machinelearningmastery.com/ On his website, Brownnlee sells several books that he has wtten on various aspects of of ML, Deep Learning, and Natural Language Processing. In one book, entitled A gentle step-by-step introduction to 10 top machine learning algorithms <https://machinelearningmastery.com/master-machine-learning-algorithms/>. (for the ML beginner) *he provides Excel spreadsheets for all the basic ML algorithms I mentioned above.* Here are two more of Brownlee's books where he shows how R & Python (With NumPy) can be used for ML algorithms. Machine Learning Mastery with R <https://machinelearningmastery.com/machine-learning-with-r/> (for the ML intermediate) Deep Learning with Python <https://machinelearningmastery.com/deep-learning-with-python/> (for the Deep Learning afacionado) IMO, J's implementation of these algorithms would be more clear & concise, with much less reliance on external routines. Making a J adjunct workbook to Brownlee's books, though a huge task, would be a showcase for why a true matrix language is the optimal way to describe these algorithms. Also, attached below is an email I just received containing a topical discussion about operations on sparse matrices using Python's NumPy addon, as well as an interesting article about math operations on different-sized arrays called "Broadcasting". Jason sends these emails out as a weekly ML newsletter. Skip Cave Cave Consulting LLC <<<>>> ---------- Forwarded message ---------- From: Jason @ ML Mastery <[email protected]> Date: Thu, Mar 15, 2018 at 1:11 PM Subject: Broadcasting, Sparsity and Deep Learning To: [email protected] Hi, this week we have two important tutorials and an overview of linear algebra for deep learning. Broadcasting is a handy shortcut to performing arithmetic operations on arrays with differing sizes. Discover how broadcasting works in this tutorial: >> A Gentle Introduction to Broadcasting with NumPy Arrays <http://t.dripemail2.com/c/eyJhY2NvdW50X2lkIjoiOTU1NjU4OCIsImRlbGl2ZXJ5X2lkIjoiMjI5MzQ1MDYyOSIsInVybCI6Imh0dHBzOi8vbWFjaGluZWxlYXJuaW5nbWFzdGVyeS5jb20vYnJvYWRjYXN0aW5nLXdpdGgtbnVtcHktYXJyYXlzLz9fX3M9dWIxYnBpaG9la3Fic3BmdnF6cnMifQ> Sparse vectors and matrices are an important an under-discussed area of applied machine learning. Discover sparsity and how to work with sparse data in this tutorial: >> A Gentle Introduction to Sparse Matrices for Machine Learning <http://t.dripemail2.com/c/eyJhY2NvdW50X2lkIjoiOTU1NjU4OCIsImRlbGl2ZXJ5X2lkIjoiMjI5MzQ1MDYyOSIsInVybCI6Imh0dHBzOi8vbWFjaGluZWxlYXJuaW5nbWFzdGVyeS5jb20vc3BhcnNlLW1hdHJpY2VzLWZvci1tYWNoaW5lLWxlYXJuaW5nP19fcz11YjFicGlob2VrcWJzcGZ2cXpycyJ9> Linear algebra is a required tool for understanding precise descriptions of deep learning methods. Discover the linear algebra topics required for deep learning in this post: >> Linear Algebra for Deep Learning <http://t.dripemail2.com/c/eyJhY2NvdW50X2lkIjoiOTU1NjU4OCIsImRlbGl2ZXJ5X2lkIjoiMjI5MzQ1MDYyOSIsInVybCI6Imh0dHBzOi8vbWFjaGluZWxlYXJuaW5nbWFzdGVyeS5jb20vbGluZWFyLWFsZ2VicmEtZm9yLWRlZXAtbGVhcm5pbmc_X19zPXViMWJwaWhvZWtxYnNwZnZxenJzIn0> I'll speak to you soon. Jason <<<>>> ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
