That's a nice and concise breakdown of recommendations. I use R more than Python but was able to follow along with what you were doing as you went through the code.
I'm curious why you chose a 70/30 split rather than 80/20 or 75/25 for this. I tend to use the 80/20 split for training/testing models and always like to know the rationale for doing it a little different.