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 應該是排名靠前的結果,或者至少是排名靠前的幾個結果之一。如果不是,則可能是數據、模型參數或推理中存在其他問題。)
添加回答
舉報