python - sklearn.linear_model.LogisticRegression returns different coefficients every time although random_state is set -
i'm fitting logistic regression model , setting random state fixed value.
every time "fit" different coefficients, example:
classifier_instance.fit(train_examples_features, train_examples_labels) logisticregression(c=1.0, class_weight=none, dual=false, fit_intercept=true, intercept_scaling=1, penalty='l2', random_state=1, tol=0.0001) >>> classifier_instance.raw_coef_ array([[ 0.071101940040772596 , 0.05143724979709707323, 0.071101940040772596 , -0.04089477198935181912, -0.0407380696457252528 , 0.03622160087086594843, 0.01055345545606742319, 0.01071861708285645406, -0.36248634699444892693, -0.06159019047096317423, 0.02370064668025737009, 0.02370064668025737009, -0.03159781822495803805, 0.11221150783553821006, 0.02728295348681779309, 0.071101940040772596 , 0.071101940040772596 , 0. , 0.10882033432637286396, 0.64630314505709030026, 0.09617956519989406816, 0.0604133873444507169 , 0. , 0.04111685986987245051, 0. , 0. , 0.18312324521915510078, 0.071101940040772596 , 0.071101940040772596 , 0. , -0.59561802045324663268, -0.61490898457874587635, 1.07812569991461248975, 0.071101940040772596 ]]) classifier_instance.fit(train_examples_features, train_examples_labels) logisticregression(c=1.0, class_weight=none, dual=false, fit_intercept=true, intercept_scaling=1, penalty='l2', random_state=1, tol=0.0001) >>> classifier_instance.raw_coef_ array([[ 0.07110193825129411394, 0.05143724970282205489, 0.07110193825129411394, -0.04089477178162870957, -0.04073806899140903354, 0.03622160048165772028, 0.010553455400928528 , 0.01071860364222424096, -0.36248635488413910588, -0.06159021545062405567, 0.02370064608376460866, 0.02370064608376460866, -0.03159783710841745225, 0.11221149816037970237, 0.02728295411479400578, 0.07110193825129411394, 0.07110193825129411394, 0. , 0.10882033461822394893, 0.64630314701686075729, 0.09617956493834901865, 0.06041338563697066372, 0. , 0.04111676713793514099, 0. , 0. , 0.18312324401049043243, 0.07110193825129411394, 0.07110193825129411394, 0. , -0.59561803345113684127, -0.61490899867901249731, 1.07812569539027203191, 0.07110193825129411394]])
i'm using version 0.14, docs specify "the underlying c implementation uses random number generator select features when fitting model. not uncommon, have different results same input data. if happens, try smaller tol parameter."
i thought setting random state make sure there no randomness apparently not case. bug or desired behavior?
it's not desired, it's known issue hard fix. thing logisticregression
models trained liblinear, not allow setting random seed in robust way. when explicitly set random_state
, best effort made set liblinear's random seed, may fail.
Comments
Post a Comment