с помощью Scikit Learn in Python доктора Элвина Анга

https://www.alvinang.sg/s/Using_Decision_Tree_Classifier_DTC_to_do_Feature_Importance_Selection_on_Iris_Dataset_by_Dr_Alvin_An.ipynb

https://www.alvinang.sg/s/iris.csv

Шаг 1. Прочитайте набор данных и разделите его на функции и цель

import numpy as np
import pandas as pd
#from sklearn.preprocessing import LabelEncoder
#from sklearn.model_selection import train_test_split

# Read the Iris dataset into a Pandas DataFrame.
iris_df = pd.read_csv("https://www.alvinang.sg/s/iris_dataset.csv")

# Create a LabelEncoder object.
#le = LabelEncoder()

# Target
y = iris_df[“species”]

# Features
X = iris_df[[“sepal_length”, “sepal_width”, “petal_length”, “petal_width”]]

# Optional: Split the data into a training set and a testing set.
#train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.2)

Шаг 2: Импортируйте и обучите дерево

from sklearn import tree

# Build the classifier based on Entropy (not GINI)
dtc = tree.DecisionTreeClassifier(criterion=”entropy”)

# Train the classifier
dtc.fit(X, y)

Шаг 3: ранжируйте показатель важности функции и график

Значения находятся в диапазоне от 0 до 1, где 0 означает, что функция не имеет значения, а 1 означает, что функция является наиболее важной.

# Create a Pandas DataFrame.
feature_importances_df = pd.DataFrame(
      data={
            “feature”: X.columns,
            “importance”: dtc.feature_importances_,
      }
)

# Sort the DataFrame by the importance values.
feature_importances_df = feature_importances_df.sort_values(by=”importance”, ascending=False)

# Print the DataFrame.
display(feature_importances_df)

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#Creating a bar plot
sns.barplot(x = feature_importances_df.importance, y = feature_importances_df.feature)

#Add labels to your graph
plt.xlabel(‘Feature Importance Score’)
plt.ylabel(‘Features’)
plt.title(‘Visualizing Important Features using Decision Tree Classifier’)
plt.legend()
plt.show()

Шаг 4. Визуализируйте дерево решений

from graphviz import Source
graph = Source(tree.export_graphviz(dtc, out_file=None,
                      feature_names=X.columns,
                      class_names=pd.unique(iris_df[“species”]),
                       filled=True,
                      #rounded=True,
                      #node_ids= False,
                      #special_characters=False
               ))

display(graph)

Заключение

Длина лепестка наиболее важна, за ней следует ширина лепестка.

Длина и ширина чашелистика НЕ ​​важны.

О докторе Элвине Анге

Доктор Элвин Анг получил степень доктора философии, магистра и бакалавра в NTU, Сингапур. Ранее он был главным консультантом (наука о данных), а также доцентом. Он также был адъюнкт-лектором SUSS в течение 8 лет. Его внимание и интерес сосредоточены в области науки о данных в реальном мире. Хотя по образованию он операционный исследователь, его страсть к практическим применениям перевешивает его академическое образование. Он ученый, предприниматель, а также личный/деловой консультант.

Подробнее о нем на www.AlvinAng.sg.