繁体   English   中英

ValueError:发现样本数量不一致的输入变量:[853, 854]

[英]ValueError: Found input variables with inconsistent numbers of samples: [853, 854]

我正在处理分类任务。 我收到此错误:

ValueError:发现样本数量不一致的输入变量:[853, 854]。

854 是y_pred的大小,853 是y_true的大小。 我不知道为什么y_true的大小与y_true y_pred 尽管作为获取y_predy_true的输入的validation_data的大小是 854。

我在这一行收到错误:

tp,fp,tn,fn = perf_measure(y_true,y_pred)

我不知道如何解决这个错误,任何帮助将不胜感激。

我正在工作 4 天来解决这个错误。

这是代码:

def generate_y_true(indexPat, paths, start=0, end=100):
    y_true = []
    from_=int(len(paths)/100*start)
    to_=int(len(paths)/100*end)
    for i in range(from_, int(to_)):
        f=paths[i]
        x = np.load(PathSpectogramFolder+f)
        x = np.expand_dims(np.expand_dims(x, axis=0), axis = 0)
        x = x.transpose(0, 2, 3, 1)
        if('P' in f):
            y_true.extend([1]*x.shape[0])
        else:
            y_true.extend([0]*x.shape[0])
    return y_true

def perf_measure(y_actual, y_hat):
    TP = 0
    FP = 0
    TN = 0
    FN = 0

    for i in range(len(y_hat)): 
        if y_actual[i]==y_hat[i]==1:
           TP += 1
        if y_hat[i]==1 and y_actual[i]!=y_hat[i]:
           FP += 1
        if y_actual[i]==y_hat[i]==0:
           TN += 1
        if y_hat[i]==0 and y_actual[i]!=y_hat[i]:
           FN += 1
    return(TP, FP, TN, FN)

y_true = generate_y_true(indexPat, validation_data)

tp,fp,tn,fn=perf_measure(y_true,y_pred) 

虽然我无法对代码有更深入的了解,但我怀疑错误来自这里:

 from_=int(len(paths)/100*start)
 to_=int(len(paths)/100*end)

使用这种除法,您很可能会错过一个索引(853 而不是 854),而您得到的不是 854,而是 853。

同时在这个for循环中:

for i in range(from_, int(to_))

请记住,您没有达到上限区间int(to_) ,for 循环一直循环到int(to_)-1

我希望它可以帮助您解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM