thespread

Explainer · Clustering

How k-means sorts running backs into tiers

36 real running backs from the 2025 season, sorted into four tiers one round at a time. Every number is computed on this page.

01 · The players

Each dot is one of 36 running backs from 2025: points per game across, volatility up.

The 36 highest-scoring running backs of the 2025 regular season in PPR scoring, each with at least 8 games. Across: points per game, from 8.06 for Jordan Mason to 24.51 for Christian McCaffrey. Up: volatility, the standard deviation of a player's weekly points, from 5.50 to 13.53 for Jahmyr Gibbs. Two players with the same average can be very different starts: one delivers every week, the other swings.

02 · Scale first

Scale first: points per game spread 4.11, volatility 1.90, so both become z-scores.

K-means measures straight-line distance, so a feature with a wider spread pulls harder. Across these players points per game have a standard deviation of 4.11 and volatility only 1.90, a factor of 2.16. Standardizing removes that: subtract the mean, divide by the standard deviation. McCaffrey's 24.51 points per game become a z-score of 2.58, Gibbs' volatility of 13.53 becomes 3.03, and both axes now have a spread of exactly 1.00.

03 · Starting points

Drop 4 starting centroids with k-means++: each new one favours players far from the rest.

The algorithm needs starting centres. K-means++ picks the first one uniformly at random, here Bucky Irving, whose chance was 2.8% like every other player's. Each further pick is drawn with probability proportional to the squared distance to the nearest centre so far: Jahmyr Gibbs had a 17.6% chance, then Tony Pollard 0.7% and Derrick Henry 8.0%. The fixed seed 20260928 makes the draw repeatable.

04 · Assign

Every player joins the nearest centroid: the first groups hold 2, 10, 11 and 13 players.

With four centres in place, each player is assigned to whichever one is closest on the scaled axes. The first pass gives groups of 2, 10, 11 and 13 players. Inertia, the sum of squared distances from every player to the centre of its group, measures how tight the groups are. With the centres still sitting on four players, it is 27.71.

05 · Update

Each centroid moves to the average of its players; inertia drops from 27.71 to 18.18.

Next, every centre moves to the average position of the players assigned to it. In z-score units the four centres travel 0.29, 0.62, 0.38 and 0.55. For a fixed group, the average is the point with the smallest sum of squared distances, so this move can only lower inertia: it falls from 27.71 to 18.18. The magenta trail marks each move.

06 · Repeat

Repeat until nobody switches: after 4 rounds inertia settles at 14.89.

Assign, move, repeat. In round 2 Bijan Robinson switches groups and inertia falls to 17.11; in round 3 Christian McCaffrey follows and it falls to 14.89. In round 4 nobody switches, the centres stay where they are, and the algorithm stops. Across 20 seeded starts, 14.89 is also the lowest inertia found for four groups, so this seed did not leave the run in a worse solution.

07 · The tiers

The result: 4 elite backs, then 10 steady and 9 volatile backs at similar scoring.

Back in real units, tier 1 averages 22.30 points per game with a volatility of 11.11: McCaffrey, Robinson, Gibbs and Taylor. Tiers 2 and 3 score almost the same, 15.16 and 14.46, but tier 2 has a volatility of 6.62 and tier 3 of 9.31, so the split separates steady starters from boom-or-bust ones. Tier 4, 13 players, averages 9.95. Every player and tier is listed below.

08 · How many tiers · the check

Silhouette for k = 2 to 6: two tiers separate best at 0.434; four score 0.428.

The silhouette compares, for each player, the distance to its own group with the distance to the next group, on a scale from −1 to 1. For each k from 2 to 6 this page keeps the lowest-inertia run of 20 seeded k-means++ starts: 0.434, 0.415, 0.428, 0.429, 0.410. The site's silhouette chart keeps the best silhouette of 20 random starts instead; rerun here, it gives 0.470, 0.415, 0.428, 0.427, 0.410. Both put two tiers first.

09 · Without scaling · what breaks without it

Skip scaling: points per game carry 82% of the spread, and 14 of 36 players regroup.

Run the same seeded k-means on the raw numbers. Points per game now carry 82% of the total spread instead of 50%, and the tiers follow them: measured on the scaled axes, 71% of the separation between the unscaled tiers runs along points per game, against 52% for the scaled tiers. The two middle tiers end with the same average volatility, 7.75, and 14 of 36 players land in a different group.

The data · 36 players

Every running back and the tier k-means gave it

Sorted by tier, then by points per game. PPG is PPR points per game; SD, the volatility, is the standard deviation of a player's weekly PPR points. Tiers come from the scaled run with 4 centres shown above.

PlayerPPGSDTier
Christian McCaffreySF24.518.22Tier 1
Bijan RobinsonATL21.8110.26Tier 1
Jahmyr GibbsDET21.5813.53Tier 1
Jonathan TaylorIND21.3112.44Tier 1
De'Von AchaneMIA20.187.02Tier 2
Chase BrownCIN16.627.35Tier 2
Kyren WilliamsLA15.496.11Tier 2
Javonte WilliamsDAL15.186.02Tier 2
Travis EtienneJAX14.946.94Tier 2
Saquon BarkleyPHI14.527.19Tier 2
D'Andre SwiftCHI14.296.67Tier 2
Bucky IrvingTB13.855.61Tier 2
Jaylen WarrenPIT13.575.62Tier 2
Breece HallNYJ12.987.62Tier 2
James CookBUF17.789.20Tier 3
Derrick HenryBAL16.4410.00Tier 3
Josh JacobsGB15.819.02Tier 3
Omarion HamptonLAC15.088.08Tier 3
Ashton JeantyLV14.428.69Tier 3
Kenny GainwellPIT13.029.38Tier 3
Rhamondre StevensonNE12.7710.05Tier 3
Rico DowdleCAR12.729.80Tier 3
TreVeyon HendersonNE12.139.60Tier 3
RJ HarveyDEN12.157.66Tier 4
Quinshon JudkinsCLE12.136.73Tier 4
Zach CharbonnetSEA11.346.70Tier 4
Kenneth Walker IIISEA11.296.53Tier 4
Tony PollardTEN10.935.62Tier 4
Tyrone Tracy Jr.NYG10.727.66Tier 4
David MontgomeryDET9.826.72Tier 4
Woody MarksHOU9.076.93Tier 4
Kyle MonangaiCHI8.636.28Tier 4
Kareem HuntKC8.556.05Tier 4
Rachaad WhiteTB8.415.50Tier 4
Jacory Croskey-MerrittWAS8.257.47Tier 4
Jordan MasonMIN8.065.50Tier 4

Frequently asked questions

What does k-means clustering do with running back statistics?

K-means sorts players into a fixed number of groups so that each player sits as close as possible to the centre of its own group. Here each of the 36 running backs from the 2025 regular season is described by two numbers: PPR points per game and volatility, the standard deviation of weekly points. With four groups the run ends with tiers of 4, 10, 9 and 13 players.

Why do the statistics need to be scaled before clustering?

K-means measures straight-line distance, so the feature with the wider spread dominates. Across these players points per game have a standard deviation of 4.11 and volatility only 1.90, a factor of 2.16. Converting both to z-scores gives each axis a spread of exactly 1.00. Without scaling, points per game carry 82% of the total spread instead of 50%, and 14 of the 36 players land in a different group.

What is k-means++ and why is the seed fixed?

K-means++ is a way to choose starting centres. The first is picked uniformly at random; each further centre is drawn with probability proportional to the squared distance to the nearest centre already chosen, so the starting points spread out across the data. In this run the first pick, Bucky Irving, had a 2.8% chance like every other player. The fixed seed 20260928 makes the draw, and the whole result, repeatable.

How does the algorithm know when to stop?

It alternates two moves: assign every player to the nearest centre, then move each centre to the average of its players. Neither move can raise inertia, the sum of squared distances from players to their centres. Here inertia falls from 27.71 to 18.18 after the first move, then to 17.11 and 14.89. In round 4 nobody switches groups, so the algorithm stops; 14.89 was also the lowest inertia across 20 seeded starts.

How many tiers fit these running backs best?

The silhouette compares each player's distance to its own group with the distance to the next group, on a scale from −1 to 1. For k from 2 to 6, keeping the lowest-inertia run of 20 seeded starts, the scores are 0.434, 0.415, 0.428, 0.429 and 0.410. Two tiers separate best, but four score almost as high and split the middle into steady and volatile backs averaging 15.16 and 14.46 points per game.

The same walkthrough as a video

Recorded from the page above. Narration uses a synthetic voice.
Narration transcript

Each dot is one running back from the twenty twenty-five season, thirty-six in all. Points per game run across. Volatility, how much a player's score swings from week to week, runs up.

Scale first. Points per game are spread out more than twice as widely as volatility, so they would dominate every distance. Both axes become z-scores, with the same spread of one.

Now drop four starting centroids. K-means plus plus picks the first one at random, then favours players far from the centroids already placed, so the starts spread out.

Every player joins the nearest centroid. The first groups are lopsided: two, ten, eleven and thirteen players.

Each centroid moves to the average of its players. The groups get tighter: inertia drops from twenty-seven point seven one to eighteen point one eight.

Assign, move, repeat. Bijan Robinson switches groups in round two, Christian McCaffrey in round three. In round four nobody moves, and the algorithm stops.

The result: four elite backs at the top. Then two groups that score about the same, one steady and one boom or bust. And a fourth tier of thirteen.

The check. The silhouette score measures how cleanly the groups separate. Two tiers score highest, point four three four. Four tiers come in at point four two eight. The site's own chart, rerun here with its method, also puts two tiers first.

Now break it. Skip the scaling, and points per game carry eighty-two percent of the spread. The split between steady and boom-or-bust backs disappears, and fourteen of thirty-six players land in a different group.