python - ValueError:发现样本数量不一致的输入变量:[853, 854]
问题描述
我正在处理分类任务。我收到了这个错误:
ValueError:发现样本数量不一致的输入变量:[853, 854]。
854 是 的大小,y_pred
853 是 的大小y_true
。不知道为什么大小不一y_true
样y_pred
。虽然其中的大小validation_data
是要获取的输入y_pred
并且y_true
是 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
。
我希望它可以帮助你解决你的问题。
推荐阅读
- flutter - Flutter:[文件路径和名称].java 使用或覆盖了已弃用的 API
- python - 当父类定义了__call__时如何打印子类的签名
- database - post、img-thumbnail 和 file 的合适数据库模型是什么?
- python - python和EDSA secp256k1签名错误
- flutter - Flutter : PaginatedDataTable 现在可以获取页面了吗?
- r - 通过在 R 中对两列进行分组来求和行
- python - VSCode:编辑 Jupyter Notebook 时更改的键绑定无效
- web3js - 一次调用合约函数生成多笔交易
- javascript - Minipreview jQuery链接预览父的内容
或者
只要 - docker - 尝试将 docker 自动部署到我的服务器。但是 nginx 图像没有显示应用程序