0
我已經使用擬合方法訓練了一個名爲clf的估計器,並將模型保存到磁盤。下一次運行該程序,它將從磁盤加載clf。如何預測使用scikit?
我的問題是:
- 如何預測其保存在磁盤上的樣本?我的意思是,如何加載並預測?
- 如何在預測後獲取樣本標籤而不是標籤整數?
我已經使用擬合方法訓練了一個名爲clf的估計器,並將模型保存到磁盤。下一次運行該程序,它將從磁盤加載clf。如何預測使用scikit?
我的問題是:
如何預測保存在磁盤上的樣本?我的意思是,如何加載並預測?
您必須對新樣本使用與用於傳遞給fit
方法的樣本相同的數組表示。如果要預測單個樣本,則輸入必須是形狀爲(1, n_features)
的2D numpy陣列。
在HDD上讀取原始文件並將其轉換爲適合分類的numpy數組表示方式是一個特定於域的問題:它取決於您是否嘗試對文本文件,jpeg文件,視頻文件中的幀進行分類,數據庫中的行,syslog監控服務的日誌行...
如何在預測後獲取樣本標籤而不是標籤整數?
只需保留一個標籤名稱列表,並確保擬合時用作目標值的整數範圍爲[0, n_classes)
。例如['spam', 'ham']
,如果在範圍[0, 1]
有預測那麼你可以做:
new_samples = # 2D array with shape (n_samples, n_features)
label_names = ['ham', 'spam']
predictions = [label_names[pred] for pred in clf.predict(new_samples)]
我使用TfidfVectorizer產生傳遞給適合的方法,例如數組vectorizer = TfidfVectorizer(sublinear_tf = True,max_df = 0.5,stop_words ='english',charset_error ='ignore') X_train = vectorizer.fit_transform(data_train.data),我想知道如何生成新的相同數組表示法從磁盤加載模型後的樣本?我想,如何爲新樣本生成特徵vetor,因爲如果我只是使用vectorizer,transform(newSampleData),我想我會得到錯誤的特徵 – user1687717
您需要重用相同的矢量化器實例並使用transform方法。它將字符串列表作爲輸入。剛剛閱讀你的文本文件(假設它們是用utf-8字符集編碼的): 'new_samples = [open(f,'wb').read()。decode('utf-8')for f在文件名中]' – ogrisel
在前面的評論中有一個錯字,它應該是'open(f,'rb')'而不是'open(f,'wb')'。 – ogrisel