机器学习的常规任务之一是比较多种不同分类算法模型的优劣。在前两篇文章中,我们介绍了六种分类模型,对应文章分别为:
Python机器学习10:机器学习中的六种分类算法及实现(上)
Python机器学习11:机器学习中的六种分类算法及实现(下)
本文将会综合运用上述六种分类算法解决同一个任务问题,并比较上述文章中提及的六种算法好坏。上述六种算法主要采用Python机器学习库scikit-learn来实现。你可以将这六种算法的实现代码作为自己常用的机器学习模板,并添加更多不同的分类算法。
引言
本文分为二部分,如下所示:
比较多种不同的机器学习模型六种分类算法的比较与运用比较多种不同的机器学习模型
如何为当前的任务选择最佳机器学习模型?通常会有多种模型能够解决同一个问题,每种模型都有着自身特点和适合解决的问题类型。
可以使用交叉验证等多重采样的方法,预估每种模型对测试数据的效果,并从多种预估效果中选出最佳的1-2种算法模型。常见的指标有准确度、召回率、F1值、auc等。
当比较多种模型的效果时,可以使用不同的可视化方法,以便从不同的角度直观地分析效果。同样地,可视化的指标为模型的准确度、召回率、方差等。
六种分类算法的比较与运用
比较不同机器学习算法的关键是:确保在相同数据上以相同的方式评估每个算法的效果。
这可以通过在代码中强制写好测试框架来保证,具体可参见下面代码。
本文将沿用前两篇文章中的六种不同分类算法:
逻辑回归线性判别分析K近邻分类和回归树朴素贝叶斯支持向量机本文使用的数据集来自UCI机器学习库的标准二分类数据集,Pima Indians糖尿病数据集。该数据集有8个特征和2个类别。
使用10倍交叉验证评估每个算法,其中需要注意的是,需要使用相同的随机种子,以确保每次运行时训练数据和测试数据是相同的。只有这样的比较,才是有说服力、有意义的比较。
下面的45行代码实现了上述的六种机器学习算法。
运行代码,将打印出每种算法在该数据集上的平均准确度和标准偏差。如下所示:
同时,该代码将上述指标通过箱线图可视化出来。
从上述结果可以看出,逻辑回归和线性判别分析可能是能够较好地解决该分类问题的二种算法。
小结
通过本文的学习,你应该学会了如何使用scikit-learn在分类数据集上评估多个不同的机器学习算法。
在整个评估过程中,你应该学会了如何使用相同的测试工具来评估算法效果,以及如何使用箱线图来可视化算法效果。你可以将本文的代码作为评估算法的模板,用于自己的项目中。