机器学习测试笔记(24)——综合_学习曲线

简介: 机器学习测试笔记(24)——综合_学习曲线

1 画学习曲线


1.1函数和类调用图

image.png


1.2 代码

class LearningCurve:
    def__init__(self,data):
       self.data = data
#定义一个绘制学习曲线的函数
    defplot_learning_curve(self,estimator, title,X,y,ylim=None,cv=None,n_jobs=2,train_sizes=np.linspace(.1,1.0,5)):
if ylim is not None:
           plt.ylim(*ylim)
       plt.xlabel(u"训练样本")
       plt.ylabel(u"得分")
       plt.ylim(0,1.1)
        tarining_sizes,train_scores,test_scores =learning_curve(estimator,X,y,cv=cv,n_jobs=n_jobs,train_sizes=train_sizes)
       train_scores_mean = np.mean(train_scores,axis=1)
       test_scores_mean = np.mean(test_scores,axis=1)
       plt.grid()
       plt.plot(tarining_sizes,train_scores_mean,'o-',label=u"训练得分",c='r')
       plt.plot(tarining_sizes,test_scores_mean,'o-',label=u"交叉验证得分",c='g')
       plt.legend(loc='lower right')
return plt
#画学习曲线
    deflearning_curve(self,model_name,pram,title):
       ML = Machine_Learn()
       mytype = ML.get_pram_type(model_name)
       X,y = ML.get_data(self.data)
       cv = ShuffleSplit(n_splits=100,test_size=0.2,random_state=0)
       mytitle =u"学习曲线("+title+")"
       print(model_name)
if len(pram) == 0:
           plt.figure()
           clf = ML.get_model(model_name)
           self.plot_learning_curve(clf,mytitle,X, y,ylim=(0.9,1.01),cv=cv)
else:
           plt.figure()
           pramdic = eval(pram[0])
            i = 0
           maxj=0
           i,j = ML.Get_line_and_Column(pramdic)
           m =0
for key,values in pramdic.items():
                valuedics =values.split(",")
for valuedic in valuedics:
                    clf =ML.judg_clf(key,mytype,model_name,valuedic)
                    plt.subplot(i,j,m+1)
                   plt.title(key+"="+valuedic)
                   self.plot_learning_curve(clf,mytitle,X, y,ylim=(0.9,1.01),cv=cv)
                   m=m+1
       ML.set_ply_font_info_and_show(title)
#准备画学习曲线
    defDraw_learn_curve(self,scattertype):             
       ML = Machine_Learn()
       prams,model_name,title_name = ML.get_algorithm_type(scattertype)
       i = 0
for pram in prams:
           self.learning_curve(model_name[i],pram,title_name[i])
           i = i+1


1.3调用

if __name__=="__main__":
lc = LearningCurve("breast_cancer")
   lc.Draw_learn_curve("Liner")
   lc.Draw_learn_curve("RandomForest")
   lc.Draw_learn_curve("DecisionTree")
   lc.Draw_learn_curve("KNeighbors")
   lc.Draw_learn_curve("Bayes")
   lc.Draw_learn_curve("SVM")
   lc.Draw_learn_curve("Neural_network")
   lc.Draw_learn_curve("Ensemble")


2 结果


本结果数据来源:

sklearn.datasets.load_breast_cancer()


2.1 线性模型

image.png

image.png

image.png


  • alpha变化对整体影响不大

image.png


  • 套索回归得分很低。
  • alpha变化对整体影响不大。

image.png


  • alpha变化整体训练数据的得分与测试数据的得分影响不大。
  • L1_ratio越大,训练数据的得分与测试数据的得分越低。

总体

  • alpha变化整体训练数据的得分与测试数据的得分影响不大。
  • 逻辑回归比线性回归训练数据的得分与测试数据的得分要高。
  • 套索回归、弹性网络训练数据的得分与测试数据的得分相对比线性回归低。

    2.2 随机森林

image.png

  • n_estimators变化对整体训练数据的得分与测试数据的得分影响不大。

image.png


  • n_estimators变化对整体训练数据的得分与测试数据的得分影响不大。

总体

  • 随机森林算法明显存在过拟合现象。


2.3 决策树

image.png

  • 开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降。


  • max_deep越大,过拟合现象越严重。当训练集数据多了以后,过拟合现象逐步减弱,但数据得分与训练数据相等的速度数据增大而变慢。


  • 最后不管max_deep多大,最后训练数据的得分与测试数据的得分基本保持一致。

image.png


  • 开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降。


  • max_deep越大,过拟合现象越严重。当训练集数据多了以后,过拟合现象逐步减弱,但数据得分与训练数据差距减少的速度随max_deep的训练集数据增大而变慢。


  • max_deep=3和5,数据得分与训练数据没有相等的趋势。


2.4 K邻近算法

image.png

image.png


  • 整个K邻近算法,存在一定的过拟合现象。K邻近回归算法更为明显。


2.5 贝叶斯算法

image.png

image.png

image.png


  • 高斯贝叶斯算法的得分相对比较高。
  • 高斯贝叶斯算法和多项式贝叶斯算法,在训练集少的时候有些过拟合趋势现象,当数据量达到150后,训练数据的得分与测试数据的得分基本保持一致。


2.6 SVM

image.png

  • Kernel=sigmoid时该模型对相应数据没有作用。


  • 除了Kernel=sigmoid,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降,最后得分保持一致。


  • Kernel=poly时随着训练数据的增大,测试数据得分和训练数据的得分一起快速下降


  • 除了Kernel=sigmoid,训练数据的得分与测试数据的得分基本保持一致。
  • 不同的gamma值,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降。


  • gamma越大,过拟合现象越严重。当训练数据多了以后,过拟合现象减弱,但过拟合速度随gamma的增大而变慢。


  • 不同的C值,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降,最后得分基本一致。基本达到100%。


  • 不同的C值对整体的测试数据得分<训练数据得分影响不大。

image.png


  • Kernel=sigmoid时该模型对相应数据没有作用。


  • Kernel=poly时,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据和训练数据的得分一起不断下降,但是当训练数据为450的时候,得分保持一致。


  • Kernel=linear和rbf的时候,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降,最后得分保持一致。


  • Kernel=poly时随着训练数据的增大,测试数据得分和训练数据的得分一起快速下降


  • 除了Kernel=sigmoid,训练数据的得分与测试数据的得分基本保持一致。
  • 不同的gamma值,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降。


  • gamma越大,过拟合现象越严重。当训练数据多了以后,过拟合现象减弱,但过拟合速度随gamma的增大而变慢。


  • 不同的C值,开始阶段测试数据得分<训练数据得分。随着训练数据的增加,测试数据得分不断上升,训练数据的得分不断下降,最后得分基本一致。


  • 不同的C值对整体的测试数据得分<训练数据得分影响不大。

image.png

image.png


2.7 神经网络

整体运行速度相当慢

image.png


  • 数据量少的时候,存在过拟合现象,当数据量增加,过拟合现象逐步消失,训练数据得分与测试数据得分保持一致,并且得分相对比较高。
  • activation=relu与activation=identity,在训练集数据为150的时候,训练数据得分与测试数据得分保持一致


  • activation=thanh与activation=logistic,训练数据为450左右,训练数据得分与测试数据得分保持一致。


  • alpha在训练数据为150左右训练数据得分与测试数据得分保持一致。
  • alpha变化对整个系统保持一致。

image.png


  • 数据量少的时候,存在过拟合现象,当数据量增加,过拟合现象逐步消失,训练数据得分与测试数据得分保持一致,并且得分相对比较高。
  • activation=relu与activation=identity,在训练集数据为150的时候,训练数据得分与测试数据得分保持一致。


  • activation=thanh与activation=logistic在训练数据为150之前测试数据基本没有,训练数据到达450的时候,训练数据得分与测试数据得分基本保持一致。


  • 当alpha<1的时候,随着训练样本增加训练数据得分逐步降低,测试数据逐步上升;当alpha为1的时候随着训练样本增加,训练得分和测试得分一起逐步上升,最终达成一致。

2.8 集成学习

image.png

image.png

image.png

image.png

image.png


—————————————————————————————————


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

目录
相关文章
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
643 7
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7469 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
5126 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
786 6
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
495 1
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1525 1
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
541 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
1641 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
750 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 数据采集 人工智能
自动化测试的未来:AI与机器学习的融合之路
【10月更文挑战第41天】随着技术的快速发展,软件测试领域正经历一场由人工智能和机器学习驱动的革命。本文将探讨这一趋势如何改变测试流程、提高测试效率以及未来可能带来的挑战和机遇。我们将通过具体案例分析,揭示AI和ML在自动化测试中的应用现状及其潜力。
574 0

热门文章

最新文章