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

       市面上常用的机器学习算法,也就剩下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五种机器学习算法进行了比较,为了更直观地进行对比,下面将汇总一个表格来体现这几个算法的性能数据。

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

 

关注更多安卓开发、AI、股票理财、生活等资讯信息,请关注本人公众号(木圭龙的知识小屋)
posted @ 2023-06-01 17:46  tgltt  阅读(121)  评论(0编辑  收藏  举报