2015-09-21 169 views
4

我使用Cross-ValidationNaive Bayes分類器訓練了scikit-learn中的模型。我如何堅持這個模型以便以後運行新的實例?在Scikit中保存經過交叉驗證訓練的模型

這裏簡直就是我有什麼,我可以得到CV成績,但我不知道如何訪問訓練的模型

gnb = GaussianNB() 
scores = cross_validation.cross_val_score(gnb, data_numpy[0],data_numpy[1], cv=10) 

回答

5

cross_val_score不會改變你的估計,它不會返回擬合估計量。它只是返回交叉驗證估計的分數。

爲了適合您的估算器 - 您應該使用提供的數據集顯式調用它。 要保存(序列化) - 你可以用泡菜:

# To fit your estimator 
gnb.fit(data_numpy[0], data_numpy[1]) 
# To serialize 
import pickle 
with open('our_estimator.pkl', 'wb') as fid: 
    pickle.dump(gnb, fid) 
# To deserialize estimator later 
with open('our_estimator.pkl', 'rb') as fid: 
    gnb = pickle.load(fid) 
+0

我想用交叉驗證,以適應估計,我的意思是使用交叉驗證來計算參數。那我該怎麼做? – Ali

+2

@alivar,CV將數據集的不同子集上的不同分類符合並,然後對其分數進行平均。這就是爲什麼沒有使用cross_validation擬合估計量這樣的概念。基本上你應該只適合估算完整的數據集。 如果你想找到估計的超參數 - 看看[GridSearchCV](http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.GridSearchCV.html#sklearn.grid_search.GridSearchCV) –

+0

GridSearchCV是很好,但我在訓練後找不到theta和sigma載體。 BTE讓我再次解釋我的問題,以便您可以爲我提供更好的解決方案或糾正我。我有一個帶標記實例的數據集,我可以用它來訓練一個分類器,然後我必須在新實例上運行分類器,但我不知道真正的類分類。現在,我擔心的是,如果我僅僅使用帶標籤的數據集來訓練GaussianNB,我不確定它是否給我一個與使用CV時相同的精度的分類器。那有意義嗎? – Ali

相關問題