Naive Bayes / SVM classifiation - min. number of records (Python) I am doing text classification with Python. I have around 120 records with 2 columns:


text
class


I tokenize, stem and lematize the words, I also did some of my own text preprocessing. When I run the alghoritms using sklearn and divide it to training and test sets each time I run the script the Accuracy Score is so different each time for both alghoritms. Sometimes I get around 70%, sometimes 40%. Is it because of the number of records (120) or not necessarily? if it is about number of records how much of them should I have?
My suspicion is that you did not put random_state parameter on train_test_split. Don't worry it is quite common error, it just happen that your dataset is small and often with small dataset variability between result will be heavily amplified. Having small amount of data is OK, and sometimes we have to work with what we have, as long as you know how to handle it, just don't expect your model to generalize very well. 

Your model relies on bag of words representation I presume. With small data what could go wrong is having a lot of Out of Vocabulary words (words in test-set does not available in training set), to handle this you can apply smoothing e.g. Add-one smoothing.