From the documentation:
The main difference between the two is that
min_samples_leafguarantees a minimum number of samples in a leaf, while
min_samples_splitcan create arbitrary small leaves, though
min_samples_splitis more common in the literature.
To get a grasp of this piece of documentation I think you should make the distinction between a leaf (also called external node) and an internal node. An internal node will have further splits (also called children), while a leaf is by definition a node without any children (without any further splits).
min_samples_split specifies the minimum number of samples required to split an internal node, while
min_samples_leaf specifies the minimum number of samples required to be at a leaf node.
For instance, if
min_samples_split = 5, and there are 7 samples at an internal node, then the split is allowed. But let’s say the split results in two leaves, one with 1 sample, and another with 6 samples. If
min_samples_leaf = 2, then the split won’t be allowed (even if the internal node has 7 samples) because one of the leaves resulted will have less then the minimum number of samples required to be at a leaf node.
As the documentation referenced above mentions,
min_samples_leaf guarantees a minimum number of samples in every leaf, no matter the value of