Maybe a stupid question, but where do you get the hands you’re clustering? My concern is that if you are creating random deals, it’s possible in principle to place the contract looking at only one hand since you thus know what deal it is and thus the other hands. It might work better to generate a set of 100 “player A” hands accompanied by 100 “player B” hands for each rather than just 10k random hand pairs.