通过比较返回布尔值(1/0)和2D数组中给定值来评定分类器的成功率

2024-09-29 21:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组“D”,包含狗和它们的健康状况。 方法返回1或0,并将2D数组的一行作为输入。 我想将分类器结果与2D数组的第13列进行比较 在理想情况下,分类器总是返回与该列中指定的值相同的值。 现在,我尝试通过将成功数相加并除以结果总数来计算分类器的总命中率。你知道吗

到目前为止,我已经设计了一个枚举for循环,以便按顺序将行移交给分类器。你知道吗

def accuracy(D, classifier):

for i, item in enumerate(D):

        if classifier(item)==D[i,13]
        #Compare result of classifier with actual value

            x+=1 #Increase x on a hit

acc=(x/D.length)
#Divide x by length of D to calculate hitrate eg. "0.5"; 100% would be "1"

return acc

可能有一个简单的格式错误的地方或我有一个错误,在我的逻辑。 (我现在进入Python 2天) 我想我可能做得不对。你知道吗


Tags: of方法for分类器错误情况数组item
1条回答
网友
1楼 · 发布于 2024-09-29 21:37:32

假设同时定义了Dclassifier,那么代码中会有一些错误,这些错误都会给出合理的错误消息(除了float casting之外,python可能会很棘手)。你知道吗

在if查询中,你们两个都缺少了一个:,并且试图访问数组D,比如D[i, 13],这是不允许的。二维数组是通过另一组[]访问的,比如D[i][13]。但是,由于您已经在枚举2D数组,因此最好使用item[13]来获取值。你知道吗

最后,如果您希望在末尾有一个十进制值,您还需要将其中至少一个值转换为浮点值,如float(x)/D.length,否则它只会将其四舍五入为0或1。你知道吗

固定代码:

for i, item in enumerate(D):
    if classifier(item) == D[i][13]:
  # if classifier(item) == item[13]: # This should also work, you can use either.
        x += 1 #Increase x on a hit

acc = (float(x)/D.length)
# Divide x by length of D to calculate hitrate eg. "0.5"; 100% would be "1"
return acc

相关问题 更多 >

    热门问题