I am working on a project where I have to train the following data-set using machine learning algorithm. One of my friend suggested decision tree, but I have never seen a situation where independent variable has more than 100 values in decision tree. I need help for choosing algorithm. Dataset is custom made and small. I am confused, since there are 100+ songs.

Dataset looks like this. Song is to be predicted. Every activity etc. comes from a predefined set of possibilities.

enter image description here

PS: It's not class assignment question. I made this database. I am also noob in ML.


You want to perform supervised learning, i.e., you have set of training examples (in this case, a set of 4-vectors with a label that corresponds to one of the 100 songs). So in particular, you want to do classification: given a 4-vector, predict a song. It might feel silly to call the songs a "category", but when you look past the naming in this particular case it should make sense: given an "activity vector", what is the song out of the 100 possible songs that will be chosen?

A fair starting point is scikit-learn's flowchart for choosing an estimator. Assuming the vector entries come from a predefined set of possibilities, you can simply map the strings to integers. For example, replace "walking" by 0, driving by "1", or replace "nothing" by 0, reading by "1", and so on. So for concreteness, your training data might be a file, where each line is something like "{0,1,0,8},47" meaning that activity 0, mob act 1, session 0, and mood 8 corresponds to song 47.

Now, assuming you have less than 100k samples, a good starting point is a linear support vector machine as per the flowchart. Depending on your results, the flowchart guides you towards other choices.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.