根据与豆包和kimi的对话,进行决策树的简单应用;
在使用决策树模型时,绘图通常指的是可视化决策树结构。这种可视化可以帮助我们理解模型是如何做出预测的,以及各个特征在决策过程中的重要性。在scikit-learn
中,可以使用plot_tree
函数来绘制决策树。以下是绘制决策树后常见的指标及其含义:
-
节点:决策树的每个节点代表一个特征判断,通常是“是”或“否”的决策。
-
分裂条件:节点上的条件表示数据如何分裂到下一个节点。例如,
X[1] <= 0.5
表示如果特征1的值小于或等于0.5,则走左边的分支。 -
样本数:每个节点中的样本数,表示该节点包含的数据点数量。samples=xxxx
-
值:每个节点中各类别的样本数量,通常以列表形式表示,列表中的每个元素对应一个类别的样本数。value=[xxxxxx,xxx]
-
类:多数表决的结果,即该节点上样本最多的类别。class = 0 或者 1
-
特征:用于分裂的特征名称,表示该节点是根据哪个特征进行分裂的。
-
阈值:用于分裂的阈值,表示特征值大于或小于该阈值将走向不同的分支。
-
样本纯度:节点的纯度,通常用基尼不纯度(Gini Impurity)或信息增益(Information Gain)来衡量。基尼不纯度接近0表示节点内样本类别非常一致,信息增益越大表示特征对分类越重要。
-
节点深度:从根节点到当前节点的路径长度,根节点的深度为0。
-
叶节点:没有子节点的节点,表示最终的决策结果。
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()
标签:kimiai,--,print,train,test,import,节点,决策树 From: https://www.cnblogs.com/yzhnm/p/18548119