python-3.x - 如何将 sklearn.metrics.classification_report 与生成器一起使用?
问题描述
我想使用 sklearn.metrics.classification_report 但我不能直接使用它,因为我的测试数据是由 python 生成器提供的。python生成器如下所示。
让我给你上下文。我正在做语音识别,我正在使用生成器来处理内存问题。基本上,生成器会加载一些批次,其中包含一些对应于一些频谱图的 numpy 数组。每个批次都有一个唯一的 id,因此获取输入和输出批次非常简单。
我正在使用 tensorflow.keras 来构建我的神经网络。因此,直到现在,我可以使用 Model.fit(因为给定版本,不推荐使用 fit_generator)来训练我的模型,并使用 Model.evaluate_generator 来估计具有常见数值指标的泛化误差(由 keras.backend 制作的宏 f1 分数, 准确性 ...)。但是,我不知道如何在编译模型时使用 keras.backend 对分类报告和它在我的指标列表中进行编码。
有人有想法吗?任何帮助,将不胜感激 !随时询问更多详细信息并评论我的代码。我很想阅读您的技巧、方法等。
非常感谢 !
class Pipeline:
# some code ...
def generator(self, set_name):
# set_name : 'training', 'validation', or 'testing'
input_paths = glob.glob('{}/{}/batch_input__*.npz'.format(self.path, set_name))
random.shuffle(input_paths)
num_inputs = len(input_paths)
while True:
for i in range(num_inputs):
input_filepath = input_paths[i]
batch_id = input_filepath.split('__')[-1].split('.')[0]
output_filepath = '{}/{}/batch_output__{}.npz'.format(self.path, set_name, batch_id)
features = np.load(input_filepath)['arr_0']
labels = np.load(output_filepath)['arr_0']
yield features, labels
解决方案
推荐阅读
- c# - TripleDES 加密和解密给出了奇怪的结果
- android - 对话框片段已添加异常未抛出
- llvm - LLVM 全局指令选择失败
- php - 使用 PHP 和 Postman 的 CURL 中相同的 GET 请求有不同的响应
- excel - 您将如何动态识别基于多页的表单上的当前控件
- python - Scikit learn:忘记之前的训练数据
- azure - 将 pfx 证书上传到 Azure 应用程序网关时如何获取名称?
- google-bigquery - 在 google bigquery 中将数据从一个表传输到另一个表是否会通过流缓冲区?
- apache-storm - 拓扑配置不是 json-serializable - Storm
- node.js - 解析 EJS 模板中包含数据的 JSON 数组时无法读取未定义的属性“长度”?