Poker tournament winner prediction
As oW_ mentioned, this can be done with the Elo rating system.

More specifically, given a record of wins and losses for some player pool, you can fit ratings for each player such the expected result of player $A$ rated $r_A$ vs player $B$ rated $r_B$ is given by:

$$
E_{A\ vs\ B} = \frac{1}{1 + 10^{(r_B-r_A)/400}}
$$

When the only possible outcomes are win or lose then this is also the probability of $A$ beating $B$.

If we define the quantity $\gamma_i = 10^{r_i/400}$ then the above can be expressed as:

$$
E_{A\ vs\ B} = \frac{\gamma_A}{\gamma_A+\gamma_B}
$$

Furthermore, Elo ratings generalize to multiplayer competitions, such that the probability of player $A$ beating players $B$, $C$, and $D$, for example, is given by:

$$
E_{A\ vs\ B,C,D} = \frac{\gamma_A}{\gamma_A+\gamma_B+\gamma_C+\gamma_D}
$$

The simplest method for computing ratings of a pool of (previously unrated) players given their game histories is to give them all the same initial rating, say $0$. The number doesn't matter because the relative rating differences (which are used to estimate win probabilities) will be the same. Next, for each result, $S$, of player $i$ vs player $j$ in the data set make the following update:

$$
r_i' \leftarrow r_i + K \times (S - E_{i,j})
$$

where $S = 1$ if $i$ beat $j$, otherwise $0$, and $K$ is a factor chosen to determine how quickly ratings change. For simplicity you can use $K=32$.

Remember to perform the update in both directions, so that if $i$ beats $j$ then $i$'s rating increases while $j$'s decreases. Use the pre-updated rating for player $i$ when computing player $j$'s rating change, so that the result is symmetric. It's also typical to use the pre-updated ratings for all rating update calculations in a single tournament. So you would keep track of all deltas for each player and apply them at the end.

To handle multi-player tournaments, simply log one win for the winner against every other player. In your case you only have the winner, so this is the best you can do. (If you had a complete ranking you could try Tom Kerrigan's Multiplayer Elo method or Microsoft's TrueSkill.)

You also need to divide $K$ by the number of players minus $1$ in your update rule:

$$
r_i' \leftarrow r_i + \frac{K}{n-1} \times (S - E_{i,j})
$$

Here is a Python library that performs the calculation I have described.

An alternative approach is the TrueSkill rating system, which handles multiplayer games nicely. It expects a ranking of everyone in the tournament, however you could try it with the winner ranked first and everyone else tied for second. Here is a Python TrueSkill library.