I have a project where I am supposed to start from scratch and learn how machine Learning works. So far everything is working out better than expected but I feel as I am offered to many ways to choose from.
My Project:
I have data with 700 rows and 108 columns as my features and I get pretty decent results when using a RandomForestClassifier
.
By now I was using train_test_split to split my data but I was reading a lot of articles where it was recommended to split data into 3 Sets (train, dev, test).
Since I dont have that much Data I thought of using a Cross-Validation.
My Problem:
So I implemented it, but couldn't really find the difference between a CV and a train_test_split with shuffle.
Before doing so I thought I know the difference betweeen these to model-selection strategies but now I am a bit confused.
My Knowledge And Questions:
1. train_test_split has the problem that the sets can be unbalanced, so if I am unlucky I train my model only with positive or negative examples.
--> can't that be solved by using stratify=True
?
2. train_test_split doesn't split the sets the same way all the time so the results aren't comparable
--> setting random_state=0
solves the problem?
3. When does it make sence for me to use CV?
4. How to understand the following picture and what benefit does it provide:
- What would be a good way to proceed?
thanks a lot for all the help and time in advance! Cheers!