This semester, I took an introductory course to Machine Learning. I learned about id3, version space learning, neural networks, GAs, etc. And I had to some homework using several of those techniques.
The first one, a id3 classifier was done in C. At the time Haskell was not available as a potential language to write the code into. However, the application offered a lot of option and it was fun and entertaining to work on it. Though not perfect, it is something I am very proud of. Code for it can be found on github and may be forked and improved if needed.
Then, we had to use Reinforcement Learning to make a robot walk in a grid along a certain path. This time, although Haskell was available, I’ve done it in Python because I wanted to have a GUI and the time was too pressing at that moment to try to do this in Haskell. Code also on github.
Later, we had to implement a regression/forecasting program using neural networks. I’ve done it in Python too, also because of the GUI and the available time. This homework raised a small problem, the solution to it will be posted soon. Code is on github, as a demo for a neural network implementation.
And then, there was the last homework, the freely chosen one. Just like the previous semester, I chose to do something in Haskell: to implement a robot which uses genetic algorithms to escape from a maze. I generated the maze using Sidewinder’s algorithm and several questions which will be answered in following posts have arisen. The implementation is not something that I’m extremely proud of (since the convergence is slow – the approach with genetic programming failed). Yet, it is, I believe, a code well written in Haskell, using the right tool for several functions. And I finally learned how to properly use advanced Haskell features, where they are needed, not everywhere or nowhere like in the previous attempts (at least I believe this now).
I’ll come back with something related to Python and GTK soon.