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

Python 通过比较返回布尔值(1/0)和2D数组中的给定值来评定分类器的成功率,python,classification,Python,Classification,我有一个数组“D”,其中包含狗及其健康状况。 方法返回1或0,并将2D数组的一行作为输入。 我想将分类器结果与2D数组的第13列进行比较 在理想情况下,分类器将始终返回该列中指定的相同值。 现在,我尝试通过将成功数相加并除以结果总数来计算分类器的总命中率 到目前为止,我已经设计了一个枚举for循环,以便按顺序将行移交给分类器 def accuracy(D, classifier): for i, item in enumerate(D): if classifier(item

我有一个数组“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天)
我想我可能没有正确地进行if比较。

假设定义了
D
classifier
,那么代码中存在一些错误,这些错误应该都会给出合理的错误消息(除了浮点转换之外,python可能会很棘手)

在if查询中,你们两个都缺少一个
,并且试图访问数组
D
,比如
D[i,13]
,这是不允许的。二维数组是通过另一组
[]
访问的,如
D[i][13]
。但是,由于您已经在枚举2D数组,因此也可以使用
项[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

假设定义了
D
classifier
,那么代码中会有一些错误,这些错误都会给出合理的错误消息(除了浮点转换之外,python可能会很棘手)

在if查询中,你们两个都缺少一个
,并且试图访问数组
D
,比如
D[i,13]
,这是不允许的。二维数组是通过另一组
[]
访问的,如
D[i][13]
。但是,由于您已经在枚举2D数组,因此也可以使用
项[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

我发现至少有三个错误:1)未定义D,2)未定义分类器,3)在“if”行末尾没有冒号。第四个错误:D.length显然不能用于二维数组。“len(D)”工作第5个错误:在循环之前需要定义x,以便在循环之外使用它保持活动状态。我看到至少三个错误:1)未定义D,2)未定义分类器,3)在“if”第4行末尾没有冒号错误:D.length显然无法在2D数组上使用。“len(D)”第五个错误:在循环之前需要定义x,以便在循环之外使用它,并且确实定义了分类器。谢谢你的更正。这是我试图完成的机器学习在线教程的一部分。遗憾的是,它们处理小任务(可能是有益的),并且该方法在网站上执行,所以我没有得到编译器错误输出。D和分类器确实已经定义。谢谢你的更正。这是我试图完成的机器学习在线教程的一部分。遗憾的是,它们处理小任务(可能是有益的),并且该方法在网站上执行,所以我没有得到编译器错误输出。