首页 > 编程语言 >上机实验三:C4.5(带有预剪枝和后剪枝)算法实现与测试

上机实验三:C4.5(带有预剪枝和后剪枝)算法实现与测试

时间:2024-11-20 10:19:16浏览次数:1  
标签:剪枝 score 上机 print train test C4.5 cv

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# (1)加载iris数据集,并留出1/3作为测试集
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)

# (2)使用训练集训练带有预剪枝和后剪枝的决策树模型
# 这里我们设置max_depth为3来进行预剪枝,min_samples_leaf为2来进行后剪枝
clf = DecisionTreeClassifier(max_depth=3, min_samples_leaf=2, random_state=42)
clf.fit(X_train, y_train)

# (3)使用五折交叉验证对模型性能进行评估
cv = StratifiedKFold(n_splits=5)
scores_accuracy = cross_val_score(clf, X_train, y_train, cv=cv, scoring='accuracy')
scores_precision = cross_val_score(clf, X_train, y_train, cv=cv, scoring='precision_macro')
scores_recall = cross_val_score(clf, X_train, y_train, cv=cv, scoring='recall_macro')
scores_f1 = cross_val_score(clf, X_train, y_train, cv=cv, scoring='f1_macro')

# 打印训练集的性能评估结果
print(f'训练集准确率: {scores_accuracy.mean():.2f}')
print(f'训练集精确率: {scores_precision.mean():.2f}')
print(f'训练集召回率: {scores_recall.mean():.2f}')
print(f'训练集F1值: {scores_f1.mean():.2f}')

# (4)使用测试集测试模型性能
y_pred = clf.predict(X_test)
test_accuracy = accuracy_score(y_test, y_pred)
test_precision = precision_score(y_test, y_pred, average='macro')
test_recall = recall_score(y_test, y_pred, average='macro')
test_f1 = f1_score(y_test, y_pred, average='macro')

# 打印测试集的性能评估结果
print(f'测试集准确率: {test_accuracy:.2f}')
print(f'测试集精确率: {test_precision:.2f}')
print(f'测试集召回率: {test_recall:.2f}')
print(f'测试集F1值: {test_f1:.2f}')

标签:剪枝,score,上机,print,train,test,C4.5,cv
From: https://www.cnblogs.com/yuanxinglan/p/18556300

相关文章

  • (带有预剪枝和后剪枝)算法实现与测试
    一、实验目的 深入理解决策树、预剪枝和后剪枝的算法原理,能够使用Python语言实现带有预剪枝和后剪枝的决策树算法C4.5算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内容 (1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样......
  • 2024强化学习的结构化剪枝原理及实践
    [2024]RL-Pruner:StructuredPruningUsingReinforcementLearningforCNNCompressionandAcceleration目录[2024]RL-Pruner:StructuredPruningUsingReinforcementLearningforCNNCompressionandAcceleration一、论文说明二、原理三、实验与分析1、环境......
  • 模型剪枝:剪枝粒度、剪枝标准、剪枝时机、剪枝频率
    模型剪枝模型剪枝:将模型中不重要的权重和分支裁剪掉。将权重矩阵中一部分元素变为零元素。减去不重要的突触(Synapses)或神经元(Neurons)。剪枝类型非结构化剪枝非结构化剪枝:破坏了原有模型的结构。怎么做:非结构化剪枝并不关心权重在网络中的位置,只是根据某种标准(例如,权重的绝......
  • 模型轻量化中的模型剪枝(Pruning)方法——结构化剪枝
    模型轻量化中的模型剪枝(Pruning)方法——结构化剪枝详解目录简介结构化剪枝的基本概念结构化剪枝的数学基础结构化剪枝的步骤结构化剪枝的方法5.1通道剪枝5.2神经元剪枝5.3层剪枝结构化剪枝的优缺点结构化剪枝的应用实例代码示例8.1代码说明总结简介随着深度学......
  • 模型轻量化中的模型剪枝(Pruning)方法——动态剪枝详解
    模型轻量化中的模型剪枝(Pruning)方法——动态剪枝详解目录简介动态剪枝的基本概念动态剪枝的数学基础动态剪枝的步骤动态剪枝的方法5.1基于门控机制的动态剪枝5.2基于稀疏化的动态剪枝5.3基于强化学习的动态剪枝动态剪枝的优缺点动态剪枝的应用实例代码示例8.1代码......
  • 北科程序设计A第八周上机
    目录1. WERTYU 2. n按规律转换为13. 多项式求值4. 判断上三角函数5. 计算阶乘 6. 计算平均成绩 7. 寻找第N个闰年8. 判断素数9. 8进制转换为10进制 10. 6174问题1. WERTYU【题目描述】把手放在键盘上时,稍不注意就会往右错一位。这样的话,Q会变......
  • 北科程序设计A第七周上机
    目录1. 分段函数 2. 程序改错:字符输出 3. 递归求斐波那契数列的第n项。 4. 将十进制转换二进制 5. 数字反射 6. 求1到n的立方和7. 走格子(递归)8. 汉诺塔问题 9. 验证歌德巴赫猜想1. 分段函数【问题描述】有一个定义在自然数上的函数f(x)定义如下:......
  • 上机实验:数据准备与模型评估
    1、实验目的熟悉Python的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;加深对训练集、测试集、N折交叉验证、模型评估标准的理解。2、实验内容(1)利用pandas库从本地读取iris数据集;(2)从scikit-learn库中直接加载iris数据集;(3)实现五折交叉验证进行模型......
  • 剪枝技术在图神经网络中的创新应用
    图神经网络,剪枝技术,模型压缩,效率优化,性能提升1.背景介绍图神经网络(GraphNeuralNetworks,GNNs)作为一种强大的机器学习模型,在处理图结构数据方面展现出非凡的潜力。近年来,GNNs在社交网络分析、推荐系统、药物发现等领域取得了显著的成果。然而,随着模型复杂度的增......
  • Java期末复习暨学校第二次上机课作业
    Java期末复习暨学校第二次上机课作业:了解程序的控制结构,掌握顺序结构程序的设计方法,掌握分支程序设计方法。第一题:闰年有两种判断方式:(1):能被4整除但不能被100整除(2):能被400整除输出结果:第二题:一个三位数求和,分别先把百位、十位、个位的数求出来再相加。百位:用给出......