I interpret your question in a way that you would like to improve your result.
Being definitely not experienced in machine learning but simply looking at you data, I find:

From this you are using the first 70 tuples for learning and the last 30 for testing. I guess one can not expect under these conditions a good result.
As a probably better approach you might try:
train = RandomSample[tuples, 70];
test = Complement[tuples, train];
Length /@ {train, test}
(* Out: {70,30} *)
Using this I get (e.g.):
Correlation[YPrediction, YObserved]
(* Out: 0.9251388656090284` *)