Plot部分代码更新
为了对任务进行整体全局的分析和把控,我们以不同的角度进行了画图和表格,以下是画图的分类。
数据分析类 | 结果比较类 | 特征比较类 | 参数比较类 |
---|---|---|---|
数据正反样例统计表 | 模型分析ROC PR曲线 | 手工特征比较图 | CD-Hit比较 |
分析序列长度的motif图 | 置信度结构出来的密度图 | umap图 | kmers比较 |
分析长度分布的图 | shap图 | data augumentation比较 |
ROC图和PR图
在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是坐标图式的分析工具,用于:
- 选择最佳的信号侦测模型、舍弃次佳的模型。
- 在同一模型中设定最佳阈值。在做决策时,ROC分析能不受成本/效益的影响,给出客观中立的建议。
全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC 曲线。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。
如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC 曲线来表示分类器的性能很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC 曲线下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的性能。AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准。
def draw_ROC_PRC_curve(roc_datas, prc_datas, config):
# roc_data = [FPR, TPR, AUC]
# prc_data = [recall, precision, AP]
f, (ax1, ax2) = plt.subplots(figsize=(16, 8), ncols=2)
plt.subplots_adjust(wspace=0.2, hspace=0.3)
lw = 2
首先先定义一个函数用来后续调用,将整张图裁剪成两个部分,分别用来做ROC曲线还有PR曲线的绘制。并且用subplots_adjust
来调整子图与子图之间的间距还有整张图在图中的位置。
plt.subplot(1, 2, 1)
ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
在这里spines['right']
是用来将左边框和右边框抹去而设计的,因为R语言画图是无边框的,而python的matplotlib是默认带有边框,现在要进行模仿,所以必须要进行改造。
colorlocal = colors[len(roc_datas)]
for index, roc_data in