Они служат разным целям.
KNN не контролируется, дерево решений (DT) контролируется. ( KNN - контролируемое обучение, в то время как K-means не контролируется, я думаю, что этот ответ вызывает некоторую путаницу. ) KNN используется для кластеризации, DT - для классификации. ( Оба используются для классификации. )
KNN определяет окрестности, поэтому должна быть метрика расстояния. Это подразумевает, что все функции должны быть числовыми. На метрики расстояния могут влиять изменяющиеся масштабы между атрибутами, а также размерное пространство.
DT, с другой стороны, предсказывает класс для данного входного вектора. Атрибуты могут быть числовыми или номинальными.
Итак, если вы хотите найти похожие примеры, вы можете использовать KNN. Если вы хотите классифицировать примеры, вы можете использовать DT.