This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-10-26
Channels
- # admin-announcements (1)
- # beginners (167)
- # boot (117)
- # boulder-clojurians (1)
- # cbus (1)
- # clara (3)
- # clojure (87)
- # clojure-conj (2)
- # clojure-japan (2)
- # clojure-russia (23)
- # clojure-spain (3)
- # clojure-za (2)
- # clojurescript (184)
- # community-development (8)
- # core-async (7)
- # core-matrix (4)
- # cursive (36)
- # data-science (74)
- # datascript (3)
- # datomic (171)
- # events (6)
- # hoplon (83)
- # ldnclj (5)
- # ldnproclodo (1)
- # lein-figwheel (2)
- # leiningen (19)
- # liberator (2)
- # off-topic (5)
- # om (227)
- # onyx (5)
- # re-frame (142)
- # reagent (4)
- # yada (5)
Yes, I sure hope the activity here is not a good measure. As for myself, I am not currently doing data science in Clojure, but I hope to start doing so.
I use it in several ways... First to organize data, then to craft invocations to more specific tools outside the jvm. I hope to do more from within clojure though (e.g. with core.matrix and neanderthal) but also with the cljsjs libraries for visualizing via clojurescript.
libraries like https://github.com/engagor/clj-vw are handy
Since you clearly have more experience with me in this area: Is the Clojure(Script) data science ecosystem sufficiently mature to be a good replacement for R or Python?
This is definitely the realm of opinion. I've never been a python fan, but have used R for many years. For the past 3 years, I usually have used clojure primarily unless something needed was lacking. When that happens, I usually look to R or shell out via conch
to some program adept in doing the thing that is lacking
I don't have much experience with clojurescript, but wish to learn cljs to be able to take advantage of the amazing visualization options that exist in the js world (e.g. d3, vega, etc...)
I would also much prefer to avoid R and Python, but a disadvantage for beginners like myself is that most of the books and learning resources are R or Python based.
There is this recent book: http://shop.oreilly.com/product/9781784397180.do
all the tools you would normally use are still available from clojure, plus anything the jvm offers as well.
matrix work https://github.com/uncomplicate/neanderthal or https://github.com/mikera/core.matrix or weka or whatever you wish
One job is in a startup writing recommendation software. Most of our existing software is in Java, and it's hard to convince the rest of the team that Clojure is a good idea.
The other job is at Play Magnus, the company behind the official iOS/Android app of chess world champion Magnus Carlsen. We're planning to write a training app next, and I'd like to be able to identify the weaknesses and characteristic mistakes of human chess players based on analysing their games, and give them exercises tailor made for their particular weaknesses.
for chess, I enjoy http://en.lichess.org/ which could conceivably (I imagine) be done with clj/cljs ...
I think there was a chess blurb in one of the early clojure books that was quite good
I don't like playing chess, though. That's why I started writing chess programs. Now I don't have to play chess myself anymore, I have a program that can do it for me.
just a quick google shows some interesting ideas using core.logic (https://github.com/matlux/clj-chess-engine)
Clojure isn't a good fit for chess engines, though. Raw speed is too important. My engine (Stockfish) is in C++, as much as I hate it. But we're drifting away from the topic.
whatever it is, I like controlling it from Clojure. Sometimes, I find that the whole thing can be in clojure, sometimes it can't though.
If you really care about speed, then the jvm is not an option, but for most things it is enough and with concurrency and parallelism it is pretty darn good.
Others hopefully will chime in as well, but for me I like have Clojure control the flow of what I am doing with the data, from the repl or with gorilla repl (notebook style). I can poke around at the repl, or shell out nicely if I want to include a fast/faster tool.
often there is one component that needs to be super fast, so just shell out to do that
check out conch
which let's you bind the name of an existing (fast) executable on your machine to a function name. Then you can call it as if it were a clojure function. really nice... https://github.com/Raynes/conch
if there is some other dsl is needed for your purpose, then manipulate that dsl from clojure. I often do that with sql
you said "I don't like playing chess, though. That's why I started writing chess programs. " which I loosely took to mean an entire philosophy 😉
That's what programming is all about. We're lazy, but thinking ahead, spending a little bit of time and energy now in order to avoid repeating tedious tasks endlessly in the future.
I actually like playing chess though. Timed chess is like my fit-bit, if I am winning I am well-rested, if I am losing then I am overworked 😉
back to your application though, perhaps managing hyperparameter search, or manipulating the data around the quality of different recommendation scenarios is a good fit for clojure
Initially, because of my lack of experience in the subject, I'll probably just use it to play around with little examples and experiments in order to learn the subject. Performance shouldn't be a problem.
Anglican is an open source, compiled probabilistic programming language integrated with Clojure, a general purpose functional programming language that just-in-time compiles to the Java Virtual Machine (JVM).
... but also less, it seems: "The programming language of Anglican is a subset of Clojure". I'm a little confused.
Will check the docs and videos. No idea what MCMC is, which I suppose mean I don't need it.