Это обычное разочарование, с которым сталкиваются новички в этой области.Причина заключается в присущей этому алгоритму случайности, и простое и понятное решение, как уже было предложено в комментариях, заключается в явной установке состояния (начального числа) генератора случайных чисел, например:
clf = DecisionTreeClassifier(random_state=42)
Но при разных значениях оценка также меняется.Так как же найти оптимальное или правильное значение?
Опять же, это ожидаемо и не может быть преодолено: этот тип случайности является фундаментальным и необратимым, за который вы просто не можете выйти.Установка случайного начального числа, как предложено выше, просто обеспечивает воспроизводимость конкретной модели / сценария, но найти любое «оптимальное» значение в том смысле, в каком вы здесь это подразумеваете (то есть относительно случайных частей), невозможно.Статистически говоря, результаты, полученные при различных значениях случайного начального числа, должны быть схожими (в статистическом смысле), но точное количественное определение этого сходства является упражнением в строгой статистике, выходящей далеко за рамки этого поста.
Случайность часто является неинтуитивной областью, и сами генераторы случайных чисел (ГСЧ) являются странными животными ... Как общее примечание, вам может быть интересно знать, что ГСЧ даже не "совместимы" на разных языках ирамки .