2012-12-04 10 views
9

Ecco un esempio che crea due set di dati:Come duplicare uno stimatore per usarlo su più dataset?

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) 

voglio usare il LogisticRegression stimatore con gli stessi valori di parametro per adattare un classificatore su ogni insieme di dati:

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_ 

Il problema è che entrambi i classificatori sono gli stessi:

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]] 

Per questo semplice esempio, potrei usare qualcosa di simile:

lr1 = LogisticRegression() 
lr2 = LogisticRegression() 

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

per evitare il problema. Tuttavia, la domanda rimane: come duplicare/copiare uno stimatore con i suoi particolari valori di parametro in generale?

risposta

14
from sklearn.base import clone 

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

Grazie! Mi è mancato perché sklearn.base non è documentato nel riferimento: http://scikit-learn.org/dev/modules/classes.html – tjanez

+0

Immagino che sia perché sono considerati interni. Immagino che il clone debba essere documentato, anche se ... –

Problemi correlati