Some of the CPUs are stupid because they literally sit there and spam unsafe projectiles. The only CPU's I usually practice against are characters that don't spam burst movement options (falcon pick, PK Thunder, etc.), and don't spam projectiles. The projectile characters can be used for powershielding. The CPU's I've found to be the best practice are marth and Lucina, as they constantly jump trying to space aerials, and they use side B to space a lot, so it's really good for practicing the neutral. If you don't like CPU's, I just do input training drills to make sure that I can perform inputs like autocancelled aerials and movement options as fast as possible, while moving, and without error. Also make sure you practice platform movement and teching. As for practicing reads/mental game, just go on FG honestly. The players there might be bad, but it exposes you to every playstyle, from a spammy ness to a marth with perfect spacing, if you play long enough. Remember to watch your matches to see any problems you have with your play, and analyze how the opponent played so that you can see if you were really reading your opponent enough based on their habits.
Try these things out. If you can't play on FG because of bad wifi, just practice everything I mentioned, and then whenever you do play just make sure you don't autopilot.