决策树学习--基于豆包、kimiai

根据与豆包和kimi的对话,进行决策树的简单应用;

 

在使用决策树模型时,绘图通常指的是可视化决策树结构。这种可视化可以帮助我们理解模型是如何做出预测的,以及各个特征在决策过程中的重要性。在scikit-learn中,可以使用plot_tree函数来绘制决策树。以下是绘制决策树后常见的指标及其含义:

  1. 节点:决策树的每个节点代表一个特征判断,通常是“是”或“否”的决策。

  2. 分裂条件:节点上的条件表示数据如何分裂到下一个节点。例如,X[1] <= 0.5表示如果特征1的值小于或等于0.5,则走左边的分支。

  3. 样本数:每个节点中的样本数,表示该节点包含的数据点数量。samples=xxxx

  4. 值:每个节点中各类别的样本数量,通常以列表形式表示,列表中的每个元素对应一个类别的样本数。value=[xxxxxx,xxx]

  5. 类:多数表决的结果,即该节点上样本最多的类别。class = 0 或者 1 

  6. 特征:用于分裂的特征名称,表示该节点是根据哪个特征进行分裂的。

  7. 阈值:用于分裂的阈值,表示特征值大于或小于该阈值将走向不同的分支。

  8. 样本纯度:节点的纯度,通常用基尼不纯度(Gini Impurity)或信息增益(Information Gain)来衡量。基尼不纯度接近0表示节点内样本类别非常一致,信息增益越大表示特征对分类越重要。

  9. 节点深度:从根节点到当前节点的路径长度,根节点的深度为0。

  10. 叶节点:没有子节点的节点,表示最终的决策结果。

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

# 读取Excel文件,这里假设文件名为data.xlsx,且第一行为表头,数据中最后一列是目标标签列

file_path = 'E:/xx/order_info.xlsx'
df = pd.read_excel(file_path)
print(df.head())


# 分离特征和标签,除最后一列外的其他列作为特征(X),最后一列作为标签(y)
X = df.iloc[:, 2:-1]
y = df.iloc[:, -1]


# 划分训练集和测试集,test_size表示测试集占比,random_state是随机种子,保证可复现性
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

#X.describe()

# 创建决策树分类器对象,你可以调整参数,例如max_depth控制树的最大深度等
clf = DecisionTreeClassifier(max_depth=3)

# 使用训练集数据进行模型训练
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算准确率评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)


# 输出分类报告
print("分类报告:")
print(classification_report(y_test, y_pred))

# 输出混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))

# 可视化决策树,需要安装graphviz软件并配置好环境变量(可选步骤,如果想可视化的话)
plt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=X.columns, class_names=['0', '1'])
plt.show()

 

posted on 2024-11-15 15:57  椰汁黑糯米  阅读(26)  评论(0编辑  收藏  举报

导航