[Aprendizaje automático] Código de Python para construir un caso de árbol de decisión (Árbol de decisión)

Código de Python para construir un caso de árbol de decisión (Árbol de decisión)

Usar código Python para construir un árbol de decisión (Decisión)

Herramientas

  • Python + Jupyter
  • Graphviz 2.38 (Graphviz es un software de visualización de gráficos de código abierto)

Dirección de descarga de Graphviz:

http://www.graphviz.org/download/

Graphviz es un software de visualización de gráficos de código abierto. La visualización gráfica es un método para representar información estructural como gráficos abstractos y diagramas de red. Tiene importantes aplicaciones en interfaces visuales en redes, bioinformática, ingeniería de software, bases de datos y diseño web, aprendizaje automático y otros campos técnicos.

El programa de diseño Graphviz utiliza un lenguaje de texto simple para describir gráficos y hacer gráficos en formatos útiles, como imágenes y SVG para páginas web; PDF o Postscript para incluir en otros documentos; o se muestra en navegadores de gráficos interactivos En. Graphviz tiene muchas características útiles para gráficos específicos, como color, fuente, diseño de nodo de tabla, estilo de línea, hipervínculos y opciones de formas personalizadas.


Fuente de datos de muestra

https://raw.githubusercontent.com/ffzs/dataset/master/glass.csv

Aquí puede ver cómo se ve el conjunto de datos: https://github.com/ffzs/dataset/blob/master/glass.csv

Esta muestra de datos tiene 215 filas.


En el modo interactivo de Jupyter, el código fuente es el siguiente

Entrada

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
# 导入评估指标模块
from sklearn.metrics import accuracy_score, auc, confusion_matrix, f1_score, precision_score, recall_score, roc_curve
# 导入表格库
import prettytable
# 导入dot插件库
import pydotplus
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

# 数据导入
df = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/glass.csv', usecols=['Na','Ca','Type'])

# 为了决策树图示简洁我们尽量减少分类,和特征值
dfs = df[df.Type < 3]

# 获取特征值
X = dfs[dfs.columns[:-1]].values
# 获取标签值
y = dfs['Type'].values - 1

# 将数据37分为测试集合训练集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2018)
#### 模型训练 ####
# 决策树模型
dt_model = DecisionTreeClassifier(random_state=2018)

# 训练模型
dt_model.fit(X_train, y_train)

# 对测试集做预测
pre_y = dt_model.predict(X_test)

####模型评估####
# 混淆矩阵
confusion_m = confusion_matrix(y_test, pre_y)

df_confusion_m = pd.DataFrame(confusion_m, columns=['0', '1'], index=['0', '1'])

df_confusion_m.index.name = 'Real'
df_confusion_m.columns.name = 'Predict'

df_confusion_m

 Salida:

# 获取决策树的预测概率
y_score = dt_model.predict_proba(X_test)

# ROC
fpr, tpr, thresholds = roc_curve(y_test, y_score[:, [1]])

# AUC
auc_s = auc(fpr, tpr)

# 准确率
accuracy_s = accuracy_score(y_test, pre_y)

# 精准度
precision_s = precision_score(y_test, pre_y)

# 召回率
recall_s = recall_score(y_test, pre_y)

# F1得分
f1_s = f1_score(y_test, pre_y) 

# 评估数据制表
df_metrics = pd.DataFrame([[auc_s, accuracy_s, precision_s, recall_s, f1_s]], columns=['auc', 'accuracy', 'precision', 'recall', 'f1'], index=['结果'])

df_metrics

 Salida:

#### 可视化ROC##### 
plt.figure(figsize=(8, 7))
plt.plot(fpr, tpr, label='ROC')  # 画出ROC曲线
plt.plot([0, 1], [0, 1], linestyle='--', color='k', label='random chance')  
# 画出随机状态下的准确率线
plt.title('ROC')  # 子网格标题
plt.xlabel('false positive rate')  # X轴标题
plt.ylabel('true positive rate')  # y轴标题
plt.legend(loc=0)
plt.savefig('x.png')

 Salida:

 

import os
os.environ["PATH"] += os.pathsep + 'D:\\Program Files (x86)\\Graphviz2.38\\bin'  #注意修改你的路径
####保存决策树桂枝图为pdf####
# 决策树规则生成dot对象
dot_data = export_graphviz(dt_model, max_depth=5, feature_names=dfs.columns[:-1], filled=True, rounded=True)

# 通过pydotplus将决策树规则解析为图形
graph = pydotplus.graph_from_dot_data(dot_data)

# 将决策树规则保存为PDF文件
graph.write_pdf('G:\\Data Scientist Learning\\tree.pdf')
# 保存为jpg图片
graph.write_jpg('G:\Data Scientist Learning\\DecisionTree_sample.jpg')

Tenga en cuenta esta línea de código en el código fuente anterior:

 

import os
os.environ["PATH"] += os.pathsep + 'D:\\Program Files (x86)\\Graphviz2.38\\bin'  #注意修改你的路径

Salida:

Abra el archivo PDF generado, o la imagen JPG, puede ver el Árbol de decisión a continuación:

 

Interpretación

Publicado 646 artículos originales · elogiado 198 · 690,000 visitas

Supongo que te gusta

Origin blog.csdn.net/seagal890/article/details/105186780
Recomendado
Clasificación