亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

線性回歸負載模型未按預期進行預測

線性回歸負載模型未按預期進行預測

慕森王 2021-12-08 16:19:01
我已經用 sklearn 訓練了一個線性回歸模型,獲得 5 星評級,它已經足夠好了。我已經使用 Doc2vec 創建了我的向量,并保存了該模型。然后我將線性回歸模型保存到另一個文件中。我正在嘗試做的是加載 Doc2vec 模型和線性回歸模型并嘗試預測另一個評論。這個預測有一些很奇怪的地方:無論輸入什么,它總是預測在 2.1-3.0 左右。事情是,我有一個建議,它預測大約為 5(即 2.5 +/-)的平均值,但事實并非如此。我在訓練模型時打印了測試數據的預測值和實際值,它們的范圍通常為 1-5。所以我的想法是,代碼的加載部分有問題。這是我的加載代碼:from gensim.models.doc2vec import Doc2Vec, TaggedDocumentfrom bs4 import BeautifulSoupfrom joblib import dump, loadimport pickleimport remodel = Doc2Vec.load('../vectors/750000/doc2vec_model')def cleanText(text):    text = BeautifulSoup(text, "lxml").text    text = re.sub(r'\|\|\|', r' ', text)     text = re.sub(r'http\S+', r'<URL>', text)    text = re.sub(r'[^\w\s]','',text)    text = text.lower()    text = text.replace('x', '')    return textreview = cleanText("Horrible movie! I don't recommend it to anyone!").split()vector = model.infer_vector(review)pkl_filename = "../vectors/750000/linear_regression_model.joblib"with open(pkl_filename, 'rb') as file:      linreg = pickle.load(file)review_vector = vector.reshape(1,-1)predict_star = linreg.predict(review_vector)print(predict_star)
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您的示例代碼顯示了joblib.dump和的導入joblib.load- 即使在此摘錄中都沒有使用。而且,您文件的后綴暗示該模型最初可能是用 保存的joblib.dump(),而不是香草泡菜。

但是,此代碼顯示文件僅通過普通加載pickle.load()- 這可能是錯誤的根源。

joblib.load()文件表明,它load()可能會做這樣的事情由它自己創建多個單獨的文件中加載numpy的陣列dump()。(奇怪的是,dump()文檔對此不太清楚,但據說dump()有一個可能是文件名列表的返回值。)

您可以檢查文件的保存位置以查找似乎相關的額外文件,并嘗試使用joblib.load()而不是普通的pickle,以查看是否加載了linreg對象的功能更多/更完整的版本。


查看完整回答
反對 回復 2021-12-08
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

更新:我忽略了.split()在 之后的問題代碼中進行的標記化.cleanText(),所以這不是真正的問題。但保留答案以供參考,因為真正的問題是在評論中發現的。)

很常見的是,當用戶Doc2Vecinfer_vector()Doc2Vec infer_vector()需要一個單詞列表,而不是一個字符串。

如果提供一個字符串,該函數會將其視為單字符單詞列表 - 根據 Python 將字符串建模為字符列表以及字符和單字符字符串的類型合并。大部分這些單字符單詞可能不被模型已知的,那些可能是- 'i''a'等等-都沒有什么意義。因此推斷的文檔向量將是弱且毫無意義的。(而且,這樣的向量,饋入您的線性回歸,總是給出中等的預測值,這并不奇怪。)

如果您將文本分解為預期的單詞列表,您的結果應該會有所改善。

但更一般地,提供的話infer_vector()應該進行預處理和記號化的確切不過的培訓文檔當中。

(對您是否正確進行推理的公平測試是為您的某些訓練文檔推斷向量,然后向Doc2Vec模型詢問與這些重新推斷的向量最接近的文檔標簽。通常,同一文檔的訓練時間tag/ID 應該是排名靠前的結果,或者至少是排名靠前的幾個結果之一。如果不是,則可能是數據、模型參數或推理中存在其他問題。)


查看完整回答
反對 回復 2021-12-08
  • 2 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號