I would argue that you do in fact have to learn how to predict people. It's not an intuitive skill that most people just have. It takes careful attention to your opponent's habits, which can be hard to pick up on when your opponent is a pro. Just to reiterate what I said before, I think playing more inexperienced players helps us acquire that prediction skill. I'm not saying you should just play them to beat up on them and feel good about yourself or something. I really think it helps in the long run to predict noobs before pros.
Please don't get me wrong. I think you should play a mixed bag of players. Play lots of pros, lots of amateurs, lots of noobs. If for nothing else, it at least helps you know how to beat a noob. As stupid as that sounds, a lot of people struggle against them in tournament because they can be so unorthodox, so different from what they are used to playing against. When I say "noob," I don't mean just started the game yesterday noob. I mean someone who might eventually become competitive and is on the border of being amateur.
Playing against pros, on the other hand, is much better for helping us realize our own bad habits (i.e.- what we get punished for doing). I don't think we should limit ourselves just to playing great players or just to playing bad ones. I personally think it's helpful to play against both.