2012-12-28 76 views
0

我已經使用擬合方法訓練了一個名爲clf的估計器,並將模型保存到磁盤。下一次運行該程序,它將從磁盤加載clf。如何預測使用scikit?

我的問題是:

  1. 如何預測其保存在磁盤上的樣本?我的意思是,如何加載並預測?
  2. 如何在預測後獲取樣本標籤而不是標籤整數?

回答

2
  1. 如何預測保存在磁盤上的樣本?我的意思是,如何加載並預測?

    您必須對新樣本使用與用於傳遞給fit方法的樣本相同的數組表示。如果要預測單個樣本,則輸入必須是形狀爲(1, n_features)的2D numpy陣列。

    在HDD上讀取原始文件並將其轉換爲適合分類的numpy數組表示方式是一個特定於域的問題:它取決於您是否嘗試對文本文件,jpeg文件,視頻文件中的幀進行分類,數據庫中的行,syslog監控服務的日誌行...

  2. 如何在預測後獲取樣本標籤而不是標籤整數?

    只需保留一個標籤名稱列表,並確保擬合時用作目標值的整數範圍爲[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)] 
    
+0

我使用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

+0

您需要重用相同的矢量化器實例並使用transform方法。它將字符串列表作爲輸入。剛剛閱讀你的文本文件(假設它們是用utf-8字符集編碼的): 'new_samples = [open(f,'wb').read()。decode('utf-8')for f在文件名中]' – ogrisel

+0

在前面的評論中有一個錯字,它應該是'open(f,'rb')'而不是'open(f,'wb')'。 – ogrisel

相關問題