FastText 0.9.2 - 为什么召回 'nan'?
FastText 0.9.2 - why is recall 'nan'?
我使用 Python 界面在 FastText 中训练了一个监督模型,但我得到了关于精确度和召回率的奇怪结果。
首先,我训练了一个模型:
model = fasttext.train_supervised("train.txt", wordNgrams=3, epoch=100, pretrainedVectors=pretrained_model)
然后我得到测试数据的结果:
def print_results(N, p, r):
print("N\t" + str(N))
print("P@{}\t{:.3f}".format(1, p))
print("R@{}\t{:.3f}".format(1, r))
print_results(*model.test('test.txt'))
但结果总是很奇怪,因为它们显示精确度并且召回@1 是相同的,即使对于不同的数据集,例如一个输出是:
N 46425
P@1 0.917
R@1 0.917
然后当我寻找每个标签的精确度和召回率时,我总是得到召回率 'nan':
print(model.test_label('test.txt'))
输出为:
{'__label__1': {'precision': 0.9202150724134941, 'recall': nan, 'f1score': 1.8404301448269882}, '__label__5': {'precision': 0.9134956983264135, 'recall': nan, 'f1score': 1.826991396652827}}
有谁知道为什么会这样?
P.S.: 要尝试此行为的可重现示例,请参考 https://github.com/facebookresearch/fastText/issues/1072 和 运行 它与 FastText 0.9.2
看起来 FastText 0.9.2 在计算召回率时有一个错误,应该用 this commit 修复。
正在安装 "bleeding edge" 版本的 FastText,例如与
pip install git+https://github.com/facebookresearch/fastText.git@b64e359d5485dda4b4b5074494155d18e25c8d13 --quiet
并重新运行您的代码应该可以消除召回计算中的 nan
值。
我使用 Python 界面在 FastText 中训练了一个监督模型,但我得到了关于精确度和召回率的奇怪结果。
首先,我训练了一个模型:
model = fasttext.train_supervised("train.txt", wordNgrams=3, epoch=100, pretrainedVectors=pretrained_model)
然后我得到测试数据的结果:
def print_results(N, p, r):
print("N\t" + str(N))
print("P@{}\t{:.3f}".format(1, p))
print("R@{}\t{:.3f}".format(1, r))
print_results(*model.test('test.txt'))
但结果总是很奇怪,因为它们显示精确度并且召回@1 是相同的,即使对于不同的数据集,例如一个输出是:
N 46425
P@1 0.917
R@1 0.917
然后当我寻找每个标签的精确度和召回率时,我总是得到召回率 'nan':
print(model.test_label('test.txt'))
输出为:
{'__label__1': {'precision': 0.9202150724134941, 'recall': nan, 'f1score': 1.8404301448269882}, '__label__5': {'precision': 0.9134956983264135, 'recall': nan, 'f1score': 1.826991396652827}}
有谁知道为什么会这样?
P.S.: 要尝试此行为的可重现示例,请参考 https://github.com/facebookresearch/fastText/issues/1072 和 运行 它与 FastText 0.9.2
看起来 FastText 0.9.2 在计算召回率时有一个错误,应该用 this commit 修复。
正在安装 "bleeding edge" 版本的 FastText,例如与
pip install git+https://github.com/facebookresearch/fastText.git@b64e359d5485dda4b4b5074494155d18e25c8d13 --quiet
并重新运行您的代码应该可以消除召回计算中的 nan
值。