机器学习:Friedman检验与Nemenyi后续检验,Python实现

简介: 机器学习:Friedman检验与Nemenyi后续检验,Python实现

前言


本人大数据专业初入大三刚刚接触机器学习这一课程,教材是最典型的西瓜书,第一次作业当然就是利用本专业语言多功能python语言结合书内容尝试自己构建P-R曲线以及延伸指标曲线。当然初入一些算法和机器学习的一些库还不是很熟练掌握,有待提升自己的编程结合能力。在此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。


提示:以下是本篇文章正文内容,下面案例可供参考


一、Friedman检验


在很多时候,我们会在一组数据集上对比多个算法的性能。当有多个算法参与比较时,常用基于算法排序的Friedman


检验。我们可以给出多个数据集如D1、D2、D3、D4.....Dn等对算法A1、A2.....An进行比较。使用评估方法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,3....;若算法的测试性能相同,则平分序值。


数据集 算法A 算法B 算法C
D1 1 2 3
D2 1 2.5 2.5
D3 1 2 3
D4 1 2 3
平均序值 1 2.125 2.875


得出此算法比较序值表后,使用Friedman检验来判断这些算法的性能是否相同。若相同则平均序值也应当相同。

假定我们在N个数据集上比较k个算法,令\gamma _{i}表示第i个算法的平均序值,\gamma _{i}的均值和方差分别为(k+1)/2和(k^{2}-1)/12N。


20201001201024321.png


在k和N都较大时,服从自由度为k-1的卡方分布。

def friedman(n, k, rank_matrix):
    # 计算每一列的排序和
    sumr = sum(list(map(lambda x: np.mean(x) ** 2, rank_matrix.T)))#降序矩阵
    result = 12 * n / (k * ( k + 1)) * (sumr - k * (k + 1) ** 2 / 4)#T的卡方分布
    result = (n - 1) * result /(n * (k - 1) - result)#TF变量
    return result

20201001201230398.png服从自由度为k-1和(k-1)(N-1)的F分布。


二、Nemenyi后续检验


若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这时需要进行“后续检验”。


2020100120211418.png


def nemenyi(n, k, q):
    return q * (np.sqrt(k * (k + 1) / (6 * n)))

使用检验可以直观的用Friedman检验图表示:


20201001202732395.png


这是catEyesL大佬写的测试源代码:

https://github.com/aBadCat/machineLearning/tree/master/Friedman&Nem


总结


有时间测试不同算法的差异性吧。


目录
相关文章
|
17小时前
|
机器学习/深度学习 数据可视化 数据处理
python 机器学习 sklearn——一起识别数字吧
python 机器学习 sklearn——一起识别数字吧
|
17小时前
|
机器学习/深度学习 Python
python 机器学习 sklearn——手把手教你预测心脏病
python 机器学习 sklearn——手把手教你预测心脏病
|
8天前
|
机器学习/深度学习 算法 算法框架/工具
Python深度学习基于Tensorflow(5)机器学习基础
Python深度学习基于Tensorflow(5)机器学习基础
19 2
|
8天前
|
机器学习/深度学习 算法 Python
深入浅出Python机器学习:从零开始的SVM教程/厾罗
深入浅出Python机器学习:从零开始的SVM教程/厾罗
|
8天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
8天前
|
机器学习/深度学习 传感器 物联网
【Python机器学习专栏】机器学习在物联网(IoT)中的集成
【4月更文挑战第30天】本文探讨了机器学习在物联网(IoT)中的应用,包括数据收集预处理、实时分析决策和模型训练更新。机器学习被用于智能家居、工业自动化和健康监测等领域,例如预测居民行为以优化能源效率和设备维护。Python是支持物联网项目机器学习集成的重要工具,文中给出了一个使用`scikit-learn`预测温度的简单示例。尽管面临数据隐私、安全性和模型解释性等挑战,但物联网与机器学习的结合将持续推动各行业的创新和智能化。
|
8天前
|
机器学习/深度学习 数据采集 算法
【Python 机器学习专栏】机器学习在医疗诊断中的前沿应用
【4月更文挑战第30天】本文探讨了机器学习在医疗诊断中的应用,强调其在处理复杂疾病和大量数据时的重要性。神经网络、决策树和支持向量机等方法用于医学影像诊断、疾病预测和基因数据分析。Python作为常用工具,简化了模型构建和数据分析。然而,数据质量、模型解释性和伦理法律问题构成挑战,需通过数据验证、可解释性研究及建立规范来应对。未来,机器学习将更深入地影响医疗诊断,带来智能和精准的诊断工具,同时也需跨学科合作推动其健康发展。
|
8天前
|
机器学习/深度学习 分布式计算 物联网
【Python机器学习专栏】联邦学习:保护隐私的机器学习新趋势
【4月更文挑战第30天】联邦学习是保障数据隐私的分布式机器学习方法,允许设备在本地训练数据并仅共享模型,保护用户隐私。其优势包括数据隐私、分布式计算和模型泛化。应用于医疗、金融和物联网等领域,未来将发展更高效的数据隐私保护、提升可解释性和可靠性的,并与其他技术融合,为机器学习带来新机遇。
|
1天前
|
C语言 Python
专为编程小白设计的Python零基础入门教程,GitHub星标破W
市面上大多数技术类的书籍都着重于一步步的构建系统的知识体系,并不是说这样就是不对的,但这样按部就班的学习注定了需要花费大量的时间用来掌握“基础知识”,或死记硬背,或慢慢理解。 然而世界不会迁就你,而是在步步紧逼的告诉你要赶紧学完,赶紧找工作,赶紧挣钱,这才是你生活的基础。 今天给小伙伴们带来了一份《编程小白的第一步Python书》,这本书是专为零基础小白设计的,不会告诉“先学C语言,会更好理解Python”这种狗屁道理。而是先带你掌握搭建项目所用到的最少得知识,再真实的项目搭建中实践自己的所学,逐渐的完善知识体系
|
2天前
|
存储 算法 安全
Python编程实验六:面向对象应用
Python编程实验六:面向对象应用
18 1