2 回答
TA贡献1799条经验 获得超8个赞
您的示例代码显示了joblib.dump
和的导入joblib.load
- 即使在此摘录中都没有使用。而且,您文件的后缀暗示该模型最初可能是用 保存的joblib.dump()
,而不是香草泡菜。
但是,此代码显示文件仅通过普通加载pickle.load()
- 这可能是错误的根源。
该joblib.load()
文件表明,它load()
可能会做这样的事情由它自己创建多个单独的文件中加载numpy的阵列dump()
。(奇怪的是,dump()
文档对此不太清楚,但据说dump()
有一个可能是文件名列表的返回值。)
您可以检查文件的保存位置以查找似乎相关的额外文件,并尝试使用joblib.load()
而不是普通的pickle,以查看是否加载了linreg
对象的功能更多/更完整的版本。
TA贡献1829条经验 获得超6个赞
(更新:我忽略了.split()
在 之后的问题代码中进行的标记化.cleanText()
,所以这不是真正的问题。但保留答案以供参考,因为真正的问题是在评论中发现的。)
很常见的是,当用户Doc2Vec
向infer_vector()
. Doc2Vec
infer_vector()
需要一个单词列表,而不是一个字符串。
如果提供一个字符串,该函数会将其视为单字符单词列表 - 根据 Python 将字符串建模为字符列表以及字符和单字符字符串的类型合并。大部分这些单字符单词可能不被模型已知的,那些可能是- 'i'
,'a'
等等-都没有什么意义。因此推断的文档向量将是弱且毫无意义的。(而且,这样的向量,馈入您的线性回归,总是给出中等的预测值,这并不奇怪。)
如果您将文本分解为预期的单词列表,您的结果应该会有所改善。
但更一般地,提供的话infer_vector()
应该进行预处理和记号化的确切不过的培训文档当中。
(对您是否正确进行推理的公平测试是为您的某些训练文档推断向量,然后向Doc2Vec
模型询问与这些重新推断的向量最接近的文档标签。通常,同一文档的训练时间tag/ID 应该是排名靠前的结果,或者至少是排名靠前的几个结果之一。如果不是,则可能是数据、模型参数或推理中存在其他问题。)
添加回答
举报