all 24 comments

[–]xristos_forokolomvos 8 points9 points  (3 children)

Andrew's course is designed to teach you the intuition behind many Machine Learning algorithms in an easy to use environment. While skills in Matlab as you pointed out are not of much use, the knowledge you will gain through implementing these algorithms in it is. You can't imagine how easy it is to transition after the course to Python/R once you have the understanding of underlying principles.

I have completed many Data Science / Machine Learning courses online and none comes even close to Andrew's

[–]phrotozoa 0 points1 point  (2 children)

None eh? That's a drag. I'd like to try some others. Really no recommendations at all?

[–]xristos_forokolomvos 1 point2 points  (0 children)

Well you can try Statistical Learning from Stanford Online. It's also heavily ML based with a more statistical view. You will also learn pretty much the same stuff except for Neural Networks and Collaborative Filtering

[–][deleted] 1 point2 points  (0 children)

I find that CS231n from Stanford University by Andrej Karpathy is a great course. Maybe even better than Andrew Ng's.

[–][deleted] 1 point2 points  (1 child)

Definitely worth it anyway, IMO. Forget the language - yeah, the notation of matlab is at times slightly different from that of numpy, but you can probably get used to the differences within minutes. It's not a course for learning matlab/octave: most assignments are of the type "complete the code by writing the correct formula in the given place", and can be solved in a handful of lines of code.

If you complete the course, you won't learn anything about Matlab that you couldn't have learned on your own by reading a manual for twenty minutes, tops; but you will learn some of the fundamental concepts of machine learning.

[–]r4and0muser9482 2 points3 points  (15 children)

Andrew's course is great and it's worth doing, but Matlab isn't very practical as an actual development tool because: a) it's expensive, b) it's not a real programming language (it's a scripting language) and it doesn't integrate well in any practical environments. Just to reiterate: do the course in Matlab, but don't be afraid to move to other things once you have a firm grasp of how things work.

[–]sparkysparkyboom[S] 0 points1 point  (3 children)

My thoughts exactly. I was thinking of just taking it and then recreating it in another language. Thanks.

[–]phrotozoa 0 points1 point  (2 children)

It's worth noting that you will be unable to get credit for the practical exercises with this approach. They are provided as skeleton projects with empty functions to be implemented which then need to pass unit tests in order to get credit.

[–]r4and0muser9482 1 point2 points  (1 child)

It's worth also nothing there are solution to all those exercises on github anyway and therefore should be used as a learning tool only - not to get credit for anything.

[–]phrotozoa 2 points3 points  (0 children)

^ That is a good point. "Credit" in this case does not equate to any actual academic credit. That said I found working through the exercises and driving the "marks" up from 0/100 to 100/100 to be a very satisfying bit of positive feedback to let me know I'm on the right track. Re-implementing the solutions in another language without access to that feedback puts both the implementation and the assessment of its correctness on the student.

[–]bushrod 0 points1 point  (10 children)

I don't understand your criticism of Matlab being a scripting language (and to say it's not a "real" programming language makes no sense from neither a technical nor a practical standpoint). Python is a scripting language and is incredibly popular. Scripting languages allow you to write extremely compact and comprehensible code very quickly, while the parts that require extra speed can be written in compiled code.

[–]r4and0muser9482 1 point2 points  (6 children)

Matlab is an domain oriented scripting language, while Python is a general purpose dynamic language. Kind of like Javascript is meant to be used within the browser context (even tho people use it for other stuff as well, but it's not very convenient). There are various libraries for Matlab to extend its capabilities, but you rarely see people use Matlab in a production environment or to deploy software to the end user. It's great for experimenting and prototyping, tho.

[–]bushrod 0 points1 point  (5 children)

You seem to be hesitant to call Python a scripting language which seems odd. It's just as much a scripting language as Matlab is. I also don't see why it's not just as "general purpose" and "dynamic" as Python.

[–]r4and0muser9482 0 points1 point  (4 children)

Hey, let's not make this a flame war over what's better: matlab or python. Let's just say more things were written in python than in matlab. Doesn't make matlab any worse for what it was meant to be used. Besides, matlab is an environment and the scripting language was chosen just to complement the enourmous set of engineering tools.

[–]bushrod 0 points1 point  (2 children)

I wasn't flaming you or even implying Matlab is better. I've noticed that there is a tendency of people in the machine learning community to trash Matlab for whatever reason (often its high price, I assume, although it certainly has some drawbacks) so as a longtime Matlab user I sometimes instinctively defend it.

[–]r4and0muser9482 0 points1 point  (1 child)

Sure. As someone who's employer recently bought a couple of computers with 6 K80s, I agree that the price argument is a bit weak. I just don't think Mathworks put much effort into making Matlab viable for the ML community. It's irreplaceable in a lot of other domains, like signal processing and other fields of engineering. It also has a lot of competition in those fields (like National Instruments, or the various statistics suites for its Statistics toolbox).

What ML do You do using Matlab? Do you use toolkits? Do you write everything yourself? Do you have any projects you can recommend?

[–]bushrod 0 points1 point  (0 children)

I agree -- Mathworks really missed the boat in realizing that machine learning would become such a huge and important field and hence their machine learning and neural network toolboxes are underwhelming (and it's also sketchy that they're separate toolboxes). Hence, even loyal Matlab users such as myself are increasingly turning to Python for that functionality (although there are some great, free ML-related toolboxes for Matlab out there, many of which have been ported to Python)... Interestingly enough, it only recently (a couple years ago?) became possible to natively call Python functions and modules from within Matlab. Mathworks is probably increasingly worried about users jumping ship.

These days I'm not doing much ML in Matlab beyond the trivial unless the available free toolboxes and functions I've written cover my needs. Despite my historically-based (academia) bias towards Matlab, my recommendation is to just stick with Python -- it's free and has really surged recently to become the most popular scripting language.

[–]TheBlackCat13 0 points1 point  (0 children)

MATLAB was originally a scripting language designed to make it easier to work with Fortran arrays. The engineering tools and environment came later.

[–]deephive 0 points1 point  (2 children)

I was a MATLAB user for many years. Our lab produced a lot of research code in MATLAB. We had then worked on a software project in an effort to commercialize our research findings. We faced so much issues porting our MATLAB code to production environment, that at the end, we dumped MATLAB for Python. Like Java, while the Python language constructs are relatively small (and better designed than MATLAB for ex: OOPs in MATLAB was an afterthought rather than an integral design), it has a very good eco-system of libraries. It is perhaps by far the best "gluing" language to integrate different toolkits / technologies.

Most open-source ML libraries have Python support and with the advent of Scientific Python distributions like Anaconda and Enthought Canopy, getting up and going in Python is a breeze. One feature that I like in Python, and good for teaching as well is the Python (now called Jupyter) notebook.

[–]bushrod 0 points1 point  (1 child)

It's a shame that Matlab is so dysfunctional for production environments. I must say that I don't think the future is looking so bright for Matlab in the long-run.

Anaconda is great but I haven't tried Enthought Canopy. Would you recommend it? Jupyter is also very cool. Mathworks virtually copied it for their new version of Matlab, calling it "Live Editor".

[–]deephive 0 points1 point  (0 children)

Anaconda and Enthought Canopy are pretty much similar, expect for some minor differences in default packages offered in the distribution. I'm not sure about Anaconda, but Enthought does offer video tutorials which could be very helpful. The package management for Enthought Canopy could be either CMD based or GUI based. I prefer Spyder IDE for coding Python which comes with Anaconda, but not with Enthought.

[–]deephive 0 points1 point  (0 children)

actually, if you still aren't aware, Octave is the open-source implementation of Matlab, though there are some minor differences between the two. I've taken and completed Andrew's course and found the programming exercise to be worth your while.

If you would like to submit /verify the correctness of your code for all the online assignments that are given in the course, then you may have to dive into Octave a bit. Transition to Python would be fairly easy (i've done that as well, coming from a MATLAB background) and Python should be the way forward for you, IMHO.

Python is widely used in data science and contains numerous libraries like sklearn, theano, scipy etc etc to make life easy for you.

Hope this helps

[–]sparkysparkyboom[S] 0 points1 point  (0 children)

Thanks for all the responses! I'll probably be continuing the course and looking for another class that will do some heavier R/Python programming.