2016-04-20 50 views
0

我想获得我用于项目的二元(好/坏)分类器的ROC曲线。该分类器使用遗传算法进行预测。如何获得绘制遗传算法分类器ROC曲线的分数?

E.g.据说[1.0,0.5,0.4,0.7]给出的测试染色体如果与另一个染色体相匹配则被认为是好的,例如[0.8,0.5,0.3,0.6]。通过匹配,我的意思是Euclidean distance值(来自其他染色体)低于特定值。

我已经完成了600个实例的分类,并且我有最终的混淆矩阵(通过这个矩阵我的意思是我们可以计算最终的TPR和FPR的四值表),正确的分类标签每个实例以及每个实例的所有预测。

我看了一下ROC曲线本文档,Receiver operating characteristicTools for Machine Learning Performance Evaluation: ROC Curves in Python。我如何继续获取ROC曲线?

随着我最后的四值表,我想我只能绘制曲线中的一个点。上面附加的链接不断提到我需要一个分数(即概率分数),但我不知道如何才能将这个分配给遗传算法。但是,我如何使用每个实例的预测知识来创建一种连续的ROC曲线?免责声明:我是ROC的新手,我在Python中对它进行编码 - 因此,我附加了与Python相关的ROC文档。

+0

ROC曲线是为二元分类定义的 - 结果可以取两个值。你有一个最小化问题,这不是ROC曲线的任务。 – Calimo

+0

@Calimo,我没有做最小化问题。它是一个二元分类。也就是说,如果一个实例与一个项目相匹配,那么它就是正数。否则,它的消极。这不是二元分类吗?我认为你误解了我所谈论的内容:“如果距离低于某个程度......这只是一个匹配的标准,以确定何时说出否定或肯定的答案。我的模型非常利用GA的一种修改形式来执行一个任务(如分类),并没有真正使用遗传算法来执行最小化或最大化问题 – obiigbe91

+0

否这不是二元分类的定义,二元分类是当你给两个组中的一个或另一个分配一个观察时,那么你检查分配是否正确在这里,你有两个以上的染色体,因此它不是二元分类 – Calimo

回答

0

无论您如何创建分类器都无关紧要。最后,你的模型只是给出一个正面的标签iff ||x - x_i|| < T,其中T是一些预定义的阈值。 ROC曲线参数化正好与这种东西 - 标量值,你可以改变,使事情更偏向于分类为正面或负面。因此,简单地通过T的多个值,计算每个值的度量标准,这将创建您的ROC曲线。就这样!

+0

谢谢,我会我给出了一个尝试,即迭代T的各种值并使用度量来绘制我的ROC曲线。 – obiigbe91

+0

谢谢@lejlot我可以绘制ROC曲线。 – obiigbe91