Creating an instance of sklearn.linear_model.LogisticRegression from existing coefficients

Is it possible to create such an instance based on existing coefficients that were calculated, for example, in another implementation (for example, Java)?

I tried to instantiate and then set coef_ and intercept_ directly, and it seems to work, but I'm not sure if there is a downside here or if I break something.

+6
source share
1 answer

Yes, it works fine:

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

Output:

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

Thus, the predictions of the original and newly created models are really identical.

0
source

Source: https://habr.com/ru/post/971388/


All Articles