0

对不起,如果这有点傻,我是编码新手。我尝试创建一个混淆矩阵,我使用了 unique 函数,然后创建了一个空矩阵并尝试添加循环计数器以确定时间复杂度,但它返回 0。我认为这是因为我没有正确调用该函数,但我不知道该怎么做。非常感谢你的帮助。

L = 0
def confusionmatrix(target, prediction):
    dataframe=creatematrixnull(target)    
    for i in range(len(target)):
        dataframe[target[i]][prediction[i]]+=1
        L=L+1
        
    return dataframe
print(L)
4

1 回答 1

0

当您在函数内部分配一个新值时L,您实际上是在创建一个独立L于函数外部的新变量(它永远不会改变并保持为零)。如果您希望能够在函数之外访问此值,return则:

def confusionmatrix(target, prediction):
    L = 0
    dataframe=creatematrixnull(target)    
    for i in range(len(target)):
        dataframe[target[i]][prediction[i]]+=1
        L=L+1
    return dataframe, L

df, L = confusionmatrix(target, prediction)  # you need to actually call the function!
print(L)

但是,在这种情况下,您实际上不需要返回L,因为它始终与len(target). 编写此函数并随后获取 L 的更简单方法是:

def confusionmatrix(target, prediction):
    dataframe = creatematrixnull(target)    
    for t, p in zip(target, prediction):
        dataframe[t][p] += 1
    return dataframe

df = confusionmatrix(target, prediction)
L = len(target)
print(L)

请注意,迭代t, p in zip(target, prediction)为您提供与通过迭代获得的值相同的值target[i]prediction[i](作为tpi in range(len(target))

于 2022-02-21T19:00:41.530 回答