决策树(Python)

决策树(Decision Tree)

为达到目标,根据一定的条件进行选择的过程,就是决策树,常用于分类

构成元素是结点和边

  • 结点:根据样本的特征作出判断,根节点、叶节点。
  • 边:指示方向。

衡量标准------熵

这里熵表示样本种类的丰富性,样本种类越多越混乱,熵越大;假若全部属于同一类,则熵等于零。

构造的基本思路

随着层数增加,让熵快速降低,降低速率越快,效率越高。

缺点------过拟合

解决------剪枝

  1. 预剪枝:达某条件就停止
  2. 后剪枝:先得树,再加上限制条件(如叶节点个数)进行剪枝。

Python代码

python 复制代码
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd

# 读取数据
data = pd.read_csv('data.csv')

# 假设数据中的最后一列是目标变量,其余列是特征
X = data.iloc[:, :-1]
y = data.iloc[:, -1]

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树分类器
dt_classifier = DecisionTreeClassifier(random_state=42)

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

# 在测试集上进行预测
y_pred = dt_classifier.predict(X_test)
print(y_pred)
print(y_test)
# 评估模型准确性
accuracy = accuracy_score(y_test, y_pred)
print(f'Model Accuracy: {accuracy}')

附:构造样例数据的实例代码

python 复制代码
# 以通过学生的数学和英语成绩预测是否通过为例
import pandas as pd
import numpy as np
df = pd.DataFrame({
    'Math_Score': [np.random.randint(40, 101) for x1 in range(100)],
    'English_Score': [np.random.randint(40, 101) for x2 in range(100)],
    'Pass': [np.random.randint(0, 2) for x3 in range(100)],
})
df.to_csv('data.csv')
相关推荐
熊猫钓鱼>_>3 分钟前
当工具成为类:Softmax困境与连接器过载的算法根源
算法·ai·agent·工具·曲线·华为云码道·生态图鉴
信奥卷王11 分钟前
[GESP202503 六级] 树上漫步(含视频)
算法
Purple Coder31 分钟前
南京-我来啦
算法
w_zero_one37 分钟前
动态规划(三)
java·算法·动态规划
Logic1011 小时前
C语言/数据结构贡献法题解:数组权值——所有连续子数组中不同数字个数之和(O(n)解法)
c语言·数据结构·算法·数组·时间复杂度·贡献法·哈希记录
DongQiShanRen1 小时前
六根硬件映射(中):双站校验、生克闭环与驱动接口
数据库·人工智能·算法·rust·哈希算法·集成学习
mmmmath_31 小时前
LeetCode.637.二叉树的层平均值
算法·leetcode
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:并查集连通块与朋友圈问题解析
c++·python·算法·bfs·信息学竞赛
Tisfy1 小时前
LeetCode 2913.子数组不同元素数目的平方和 I:第一题先常数很大的O(n^2)
算法·leetcode·题解·模拟·暴力
罗湖老棍子1 小时前
[USACO05NOV] Asteroids G(洛谷-P7368)
算法·图论·二分图匹配·最大匹配·最小顶点覆盖