На этом шаге мы закончим изучение этого вопроса.
Создать собственное дерево принятия решений можно с помощью одной строки кода на языке Python. Пример 4.6 демонстрирует, как именно.
## Зависимости from sklearn import tree import numpy as np ## Данные: оценки студентов по (математика, языки, творческие ## способности) --> предмет для изучения X = np.array([[9, 5, 6, "Компьютерные науки"], [1, 8, 1, "Лингвистика"], [5, 7, 9, "Искусство"]]) ## Однострочник Tree = tree.DecisionTreeClassifier().fit(X[:, :-1], X[:, -1]) ## Результат student_0 = Tree.predict([[8, 6, 5]]) print(student_0) student_1 = Tree.predict([[3, 7, 9]]) print(student_1)
Догадайтесь, какими будут результаты выполнения этого фрагмента кода!
Данные в коде описывают трех студентов с оценками их успехов (от 1 до 10) в трех областях: математика, языки и творческие способности. Кроме того, нам известны предметы изучения этих студентов. Например, первый студент демонстрирует способности к математике и изучает computer science. Второй студент демонстрирует большие способности к языкам, чем к двум другим областям, и изучает лингвистику. Третий студент демонстрирует хорошие творческие способности и изучает искусство.
Наш однострочник создает новый объект дерева принятия решений и обучает модель на маркированных обучающих данных (последний столбец - метки) с помощью функции fit(). "Под капотом" при этом создаются три вершины, по одной для каждого признака: математика, языки, творческие способности. При предсказании класса для student_0 (математика=8, языки=6, творческие способности=5) дерево принятия решений возвращает Компьютерные науки. Оно усвоило, что такая закономерность признаков (высокий, средний, средний) указывает на первый класс. С другой стороны, при наборе признаков (3, 7, 9) дерево принятия решений предсказывает Искусство, поскольку усвоило, что оценки (низкая, средняя, высокая) указывают на третий класс.
Обратите внимание, что алгоритм - недетерминистичный. Другими словами, при выполнении одного и того же кода дважды могут быть возвращены различные результаты. Подобное поведение часто встречается в алгоритмах машинного обучения, имеющих дело с генераторами случайных чисел. В данном случае порядок признаков случаен, так что порядок признаков в итоговом дереве принятия решений может различаться.
Резюмируя: деревья принятия решений - интуитивный способ создания моделей машинного обучения, удобных для восприятия человеком. Каждая ветвь отражает выбор, основанный на отдельном признаке нового примера данных. Листья дерева отражают итоговое предсказание (классификацию или регрессию). Далее мы ненадолго оставим конкретные алгоритмы машинного обучения и рассмотрим важнейшее для машинного обучения понятие: дисперсию.
На следующем шаге мы рассмотрим получение строки с минимальной дисперсией в одной строке кода.