接上一篇《使用fastai进行图像分类之120种小狗》
制作完一个120类小狗图像分类器,那么我们写论文做报告时,怎么样能够看上去逼格更高呢。
那就是配图咯,这里我们可以制作一个混淆矩阵图,帮助我们来丰富一下报告内容。
其实混淆矩阵图在python的数据分析、机器学习中常用的scikit-learn库中就已经封装了制作混淆矩阵图的功能,让我们看下具体怎么实现
y_true = ["dog1", "dog2", "dog3", "dog4", "dog5", "dog6"]
y_pred = ["dog1", "dog1", "dog3", "dog4", "dog1", "dog6"]
confusion_matrix(y_true, y_pred, labels=["dog1", "dog2", "dog3", "dog4", "dog5", "dog6","dog7"])
是不是看上去很方便?调用一个方法就可以了,但是需要准备两个参数,分别是groundtruth列表和预测列表。可能实际操作中为了准备这两个参数还要额外增加几行代码。
在fastai这个过程将会更加简单,你只需要写一行代码,是的只要一行代码。
就可以得到一个数据集的混淆矩阵,让我们看下具体怎么写
ClassificationInterpretation.from_learner(learner).plot_confusion_matrix()
其中就一个参数learner而这个参数是不需要特地准备的,learner在创建网络的时候就已经赋值了
所以比简便的scikit-learn的方法还要简便。
让我们看看输出结果:
Oops! 和预想的有些小出入,哈哈,不急。分析一下原因,那是因为我们小狗数据集里面有120种分类,太多了数据挤在了一起,怎么办?很简单,微调下立马搞定。来看看怎么做。
ClassificationInterpretation.from_learner(learner).plot_confusion_matrix(figsize=(50,50))
可以看到我们在最后传了一个参数figsize来设置图片大小。
看看结果吧。
我们只靠一行代码就完成了一个巨大的混淆矩阵120x120的制作呢。
是不是很方便呢^^
谢谢阅读。
如果有问题,欢迎来评论区留言讨论^^