You have cases of repeats in the domain, with different values in the range.
In[3]:= xym[[1]] === xym[[11]]
Out[3]= True
In[6]:= zm[[1]] === zm[[11]]
Out[6]= False
Pretty much any attempt to treat this as a function is going to raise issues that really should be addressed before going any further. My guess is once this is all cleared up, maybe a sum of sigmoids would make sense. Given the relatively small amount of data this could be an overfit.