Sì, funziona bene:
import numpy as np
from scipy.stats import norm
from sklearn.linear_model import LogisticRegression
import json
x = np.arange(10)[:, np.newaxis]
y = np.array([0,0,0,1,0,0,1,1,1,1])
# training one logistic regression
model1 = LogisticRegression(C=10, penalty='l1').fit(x, y)
# serialize coefficients (imitate loading from storage)
encoded = json.dumps((model1.coef_.tolist(), model1.intercept_.tolist(), model1.penalty, model1.C))
print(encoded)
decoded = json.loads(encoded)
# using coefficients in another regression
model2 = LogisticRegression()
model2.coef_ = np.array(decoded[0])
model2.intercept_ = np.array(decoded[1])
model2.penalty = decoded[2]
model2.C = decoded[3]
# resulting predictions are identical
print(model1.predict_proba(x) == model2.predict_proba(x))
uscita:
[[[0.7558780101653273]], [-3.322083150375962], "l1", 10]
[[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[ True True]]
Così previsioni dei modelli originali e ricreato sono davvero identici.
fonte
2017-11-02 16:00:24
Fintanto che la funzione di previsione per la regressione utilizza solo le variabili impostate, è necessario procedere senza adattarle. –
Per verificare ciò, è possibile eseguire una piccola regressione logistica in sklearn, quindi creare un nuovo oggetto di regressione logistica e impostare 'coef_' e' intercettare_' come hai fatto, quindi confrontare i due nella previsione. Se viene eseguito (questo non è un dato, molto difficile con ad esempio SVM), quindi non vedo perché non dovrebbe funzionare. – eickenberg