В тази публикация в блога ще преминем през ръководство стъпка по стъпка за това как да внедрим дървета на решения в Python с помощта на библиотеката scikit-learn. Нека използваме подходящ пример: наборът от данни Iris, класика в областта на машинното обучение, който съдържа измервания за 150 цветя на ирис от три различни вида.

Преди да започнем, уверете се, че имате инсталирани необходимите библиотеки. Можете да направите това, като използвате pip, програмата за инсталиране на пакети на Python. Отворете командния ред (или терминал) и въведете следните команди:

pip install numpy pandas scikit-learn matplotlib

След като настроим нашата среда, можем да продължим с внедряването.

Стъпка 1: Импортирайте необходимите библиотеки

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
import matplotlib.pyplot as plt

Стъпка 2: Заредете набора от данни

Scikit-learn удобно включва набора от данни Iris, така че можем да го заредим така:

from sklearn.datasets import load_iris
iris = load_iris()

Обектът iris е обект, подобен на речник, който съдържа характеристиките, етикетите (целева променлива) и метаданни. Можем да ги заредим в Pandas DataFrame за удобство:

df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target

Стъпка 3: Разделете данните на комплекти за обучение и тестове

Можем да използваме функцията train_test_split на scikit-learn за това:

X_train, X_test, y_train, y_test = train_test_split(df[iris.feature_names], df['target'], random_state=0)

Тук използваме 75% от данните за обучение и 25% за тестване по подразбиране.

Стъпка 4: Изградете модела на дървото на решенията

Сега сме готови да създадем нашето дърво на решенията. Ще използваме класа DecisionTreeClassifier на scikit-learn:

clf = DecisionTreeClassifier(random_state=0)
clf.fit(X_train, y_train)

Стъпка 5: Направете прогнози и оценете модела

Вече можем да използваме нашия обучен модел, за да правим прогнози върху нашите тестови данни:

y_pred = clf.predict(X_test)

И оценете точността на нашия модел:

print("Accuracy:", accuracy_score(y_test, y_pred))

Стъпка 6: Визуализирайте дървото на решенията

И накрая, нека визуализираме дървото на решенията с помощта на функцията plot_tree на scikit-learn:

fig = plt.figure(figsize=(15,10))
_ = tree.plot_tree(clf, 
                   feature_names=iris.feature_names,  
                   class_names=iris.target_names,
                   filled=True)

Аргументът filled=True оцветява възлите според мажоритарния им клас. Това може да бъде полезно при визуализиране на пътищата за вземане на решения.

Това е! Вече изградихте, оценихте и визуализирахте дърво на решенията в Python с помощта на scikit-learn.

Обобщавайки

Дърветата на решенията са мощен, гъвкав инструмент в машинното обучение. Въпреки тяхната простота, те могат да дадат много точни модели. Както винаги, не забравяйте да анализирате внимателно и предварително да обработите вашите данни, преди да обучите модел за най-добри резултати. И не забравяйте да експериментирате с различни параметри и дълбочини на дърветата, за да избегнете прекомерно или недостатъчно оборудване.

До следващия път, приятно кодиране!