首页 > 编程语言 >第八课 常用机器学习算法性能对比

第八课 常用机器学习算法性能对比

时间:2023-06-01 17:56:13浏览次数:62  
标签:准确率 训练 第八课 耗时 算法 测试 对比 决策树

       市面上常用的机器学习算法,也就剩下KNN、朴素贝叶斯、决策树、随机森林这些算法了,这些算法各有优劣,适用不同的场景,没有谁能把所有其他的算法干掉而统一天下。

       下面将通过准确率、耗时两个维度,来对比KNN、朴素贝叶斯、决策树、随机森林这几个算法的性能。

1、构建数据集,并拆分为训练集和测试集

 

       调用SkLearn的make_classification构建分类数据集,总计10个分类,10万个样本,每个样本有100个特征(属性),这100个特征中,有意义的特征有20个,冗余的特征也有20个。

构建完数据集,调用train_test_split将构建好的数据集拆分为训练集(8万个样本)和测试集(2万个)样本。

2、测试KNN算法

       调用SkLearn的KNeighborsClassifier,使用上面自定义的数据集训练和测试,测试结果:训练耗时1.3秒,训练集准确率86.9%,而推理准确率77.5%,推理耗时327秒。

 

3、测试朴素贝叶斯算法

       调用SkLearn的GaussionNB,使用上面自定义的数据集训练和测试,测试结果:

  训练耗时0.16秒,训练集准确率42.7%,测试集准确率42.1%,推理耗时0.19秒。

 

4、测试决策树算法

  调用SkLearn的DecisionTreeClassifier,使用上面自定义的数据集训练和测试,测试结果:训练耗时15.24秒,训练集准确率100%,测试集准确率44.3%,推理耗时0.01秒。可见使用默认参数(无剪枝的情况下) ,决策树算法严重过拟合,所以需对决策树进行适当剪枝。

 

5、测试随机森林算法

       调用SkLearn的RandomForestClassifier,使用上面自定义的数据集训练和测试,测试结果:训练耗时98.25秒,训练集准确率100%,测试集准确率77.0%,推理耗时0.72秒。

随机森林的训练时间比决策树的时间长,因为随机森林要训练很多棵树,下面代码的随机森林内包含100棵树,其达到的准确率还是可以的,推理时间也很快,虽然训练时间长了点,但这只是线下时间,用户并不关心你的模型训练要多长时间,他只关心线上推理时间是否接受。

 

6、测试支持向量机(SVM)算法

       支持向量机是过去算法的王者,如今已经没落了,它的算法准确率是机器学习算法中最高的,但其所需的推理时间也是最慢的,尤其是在大数据集上,所以本系列课程并未引入课程对其进行介绍。

       调用SkLearn的SVC,使用上面自定义的数据集训练和测试,测试结果:训练耗时520.09秒,训练集准确率91.3%,测试集准确率88.0%,推理耗时142.75秒。

 

7、小结

       上面对KNN、朴素贝叶斯、决策树、随机森林、SVC五种机器学习算法进行了比较,为了更直观地进行对比,下面将汇总一个表格来体现这几个算法的性能数据。

       综合比较,随机森林在当前场景的性能是最优的。

 

标签:准确率,训练,第八课,耗时,算法,测试,对比,决策树
From: https://www.cnblogs.com/tgltt/p/17449778.html

相关文章

  • 常用的boosting算法
    boosting算法有许多种具体算法,包括但不限于adaboosting\GBDT\XGBoost。adaboosting原始数据集》某种算法拟合,会产生错误》根据上个模型预测结果,更新样本点权重(预测错误的结果权重增大)》再次使用模型进行预测》重复上述过程,继续重点训练错误的预测样本点。adabo......
  • spark Bisecting k-means(二分K均值算法)
    Bisectingk-means(二分K均值算法)    二分k均值(bisectingk-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二。之后选择能最大程度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。以此进行下去,直到簇的数目等于用户给定的数目K为止。......
  • 搜索算法
    搜索算法搜索寻路可视化传送门1传送门2网页嵌入如下(拖动星星以改变起点)##DijkstraBFS启发式搜索A*......
  • 堆栈算法模板
     动态维护中位数一般都是用双堆解决–同理:动态维护第K大数295.数据流的中位数难度困难800收藏分享切换为英文接收动态反馈中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr=[2,3,4] 的中位数是 3 。例如 arr=......
  • 双指针算法模板和一些题目
    什么是同向双指针?什么是相向双指针?双指针的鼻祖题——两数之和TwoSum链表上的快慢指针算法快速排序&归并排序 同向双指针•相向双指针•几乎所有TwoSum变种•Partition•QuickSelect•分成两个部分•分成三个部分•一些你没听过的(但是面试会考的)......
  • Go排序算法小总结
    Go-排序算法参考整理:1.0十大经典排序算法|菜鸟教程(runoob.com)shell排序-Mohuishou(lailin.xyz)排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部......
  • 算法:查找算法-二分查找
         ......
  • 蒙特卡洛算法
    从今天开始要研究SamplingMethods,主要是MCMC算法。本文是开篇文章,先来了解蒙特卡洛算法。Contents  1.蒙特卡洛介绍  2.蒙特卡洛的应用  3.蒙特卡洛积分   1.蒙特卡洛介绍   蒙特卡罗方法(MonteCarlomethod),也称统计模拟方法,是二十世纪四十年代中期由于科学技......
  • MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
    全文链接:http://tecdat.cn/?p=30832最近我们被客户要求撰写关于K-Means(K-均值)聚类算法的研究报告,包括一些图形和统计输出。本文首先阐明了聚类算法的基本概念,介绍了几种比较典型的聚类算法,然后重点阐述了K-均值算法的基本思想,对K-均值算法的优缺点做了分析,回顾了对K-均值改进......
  • 通用数字滤波算法
    不论你是做数字信号处理还是系统自动控制,只要系统中有模拟数据采集部分,就不可避免的存在噪声干扰的问题。应对噪声,一个方法就是利用硬件搭建模拟的滤波器,在前端采样电路滤除掉噪声;另一个方法,就是利用ADC采样,运行软件滤波算法,滤除掉信号中的噪声。特别声明:本文为个人在阅读《匠......