2012-12-04 32 views
9

下面是創建兩個數據集的例子:如何複製估算器以便在多個數據集上使用它?

from sklearn.linear_model import LogisticRegression 
from sklearn.datasets import make_classification 

# data set 1 
X1, y1 = make_classification(n_classes=2, n_features=5, random_state=1) 
# data set 2 
X2, y2 = make_classification(n_classes=2, n_features=5, random_state=2) 

我想用LogisticRegression估計用相同的參數值,以適應設置每個數據的分類:

lr = LogisticRegression() 

clf1 = lr.fit(X1, y1) 
clf2 = lr.fit(X2, y2) 

print "Classifier for data set 1: " 
print " - intercept: ", clf1.intercept_ 
print " - coef_: ", clf1.coef_ 

print "Classifier for data set 2: " 
print " - intercept: ", clf2.intercept_ 
print " - coef_: ", clf2.coef_ 

的問題是這兩個分類是相同的:

Classifier for data set 1: 
    - intercept: [ 0.05191729] 
    - coef_: [[ 0.06704494 0.00137751 -0.12453698 -0.05999127 0.05798146]] 
Classifier for data set 2: 
    - intercept: [ 0.05191729] 
    - coef_: [[ 0.06704494 0.00137751 -0.12453698 -0.05999127 0.05798146]] 

對於這個簡單的例子,我可以使用類似:

lr1 = LogisticRegression() 
lr2 = LogisticRegression() 

clf1 = lr1.fit(X1, y1) 
clf2 = lr2.fit(X2, y2) 

避免該問題。但是,問題依然存在:如何複製/複製一個估計器,並使其具體參數值一般?

回答

14
from sklearn.base import clone 

lr1 = LogisticRegression() 
lr2 = clone(lr1) 
+0

謝謝!我錯過了,因爲sklearn.base沒有記載在參考文獻中:http://scikit-learn.org/dev/modules/classes.html – tjanez

+0

我想那是因爲它們被認爲是內部的。我想克隆應該被記錄,但是... –

相關問題