Tools for the data science craftsman: R, Python, Clojure and Julia
blog.redowlanalytics.com
blog.redowlanalytics.com
I'm quite fluent in R. I love some parts of the language, the breadth of packages available, and ggplot. But it's really slow and not general purpose, so I always preprocess data in Ruby.
Clojure is a fantastic language, but it's data analysis story is thin. The matrix libraries are still being worked out. Incanter, which contains most basic stats routines, seems abandoned. Yet, some people like the Flightcaster guys use it, so there might be ways to work around this.
Julia looks great, but I'm worried by the lack of emphasis in functional programming. Having a multi-paradigm language is great. Some things are difficult to implement outside an imperative mindset e.g., a Gibbs sampler. But functional should be the preferred option if possible. Maybe this is a wrong impression of mine.
Python has all the libraries, but I've never really liked the language, and it's still quite slow.
I don't just want a fast MATLAB replacement. I want a fully-fledged multi-paradigm programming language.
http://nbviewer.ipython.org/gist/StefanKarpinski/b8fe9dbb36c...
Functional style isn't something to embrace for its own sake. Lazy data structures, in particular, while elegant, require a very sophisticated compiler in order to have even remotely decent performance. Even with a sufficiently clever compiler, the performance characteristics of the resulting code tend to be extremely opaque and difficult to reason about. That said, sometimes it's a nice way to express things and it's quite possible to implement lazy data structures in Julia: see, for example, the Lazy [1] and LazySequences [2] packages.
I'm new to R and just been creating simple plot graphs. I'm liking how it illustrates my data from the csv file. I never tried matplotlib but my colleagues prefer it instead of R.
Python is my go to language for fast scripting and programming. I also like how easy a REST API can be done in Python using Flask.
On the other hand, I don't use Clojure and Julia. I think I heard Julia before but not really familiar with it. For Clojure, I prefer Scala. Not because of performance or anything, it's just the language that I learned first. I think they have the same purpose as presented in the article. Just like Clojure, the "JVM goodness" is also present in Scala. I like that it can use Apache stuff like OpenNLP, IO, etc.
Been combining Python, Scala, and R in my work. Python for REST API, Scala for the algorithm or heavy computing, and R for the visualization of data.
Since then, I have been playing with clojure with regards to data science. What I liked about clojure was that the programs looked more like transforming data sets with map, reduce, into, filter, merge-with, join, difference, union. You get more than just lists. You have maps, vectors, and sets too. The code looks like you are loading a lot of data into memory but with lazy sequences you are really processing these collections one element at a time. The so called threading macros (nothing to do with multi-threading) keeps the number of parenthesis down.
https://github.com/damballa/parkour/ (Hadoop MapReduce in idiomatic Clojure)
If your query is in R then you can convert to a PMML query and then Cascading to Run on Hadoop:
http://blog.cloudera.com/blog/2013/11/how-to-use-cascading-p...
Linear programming
Advanced calculus
Nonlinear programming
Probability
Stochastic processes
Time series analysis
Fourier theory
Basic mathematical statistics
Multivariate statistics
Analysis of variance and experimental design
Analysis of categorical data
From the table of contents, the only thing I could find missing was the kitchen sink!
His prerequisites are:
"multivariate calculus, probability, linear algebra, and computer programming".
He does say that there is code on-line for nearly everything in the book, code for Matlab/Octave.