Как извлечь коэффициенты из подогнанного трубопровода для штрафной логистической регрессии? - PullRequest
1 голос
/ 30 октября 2019

У меня есть набор обучающих данных, который состоит из X, который является набором из n столбцов данных (функций), и Y, который является одним столбцом целевой переменной.

Я пытаюсь тренироватьсямоя модель с логистической регрессией использует следующий конвейер:

pipeline = sklearn.pipeline.Pipeline([
    ('logistic_regression', LogisticRegression(penalty = 'none', C = 10))
])

Моя цель - получить значения каждого из n коэффициентов, соответствующих признакам, в предположении линейной модели (y = coeff_0 + coeff_1*x1 + ... + coeff_n*xn).

Я пытался настроить этот конвейер на моих данных с помощью model = pipeline.fit(X, Y). Поэтому я думаю, что теперь у меня есть модель, которая содержит коэффициенты, которые я хочу. Тем не менее, я не знаю, как получить к ним доступ. Я ищу что-то вроде mode.best_params_('logistic_regression').

Кто-нибудь знает, как извлечь подобранные коэффициенты из такой модели?

Ответы [ 2 ]

2 голосов
/ 30 октября 2019

Взгляните на документацию scikit-learn для Pipeline, вдохновленный этим примером:

from sklearn import svm
from sklearn.datasets import make_classification
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
from sklearn.pipeline import Pipeline
# generate some data to play with
X, y = make_classification(n_informative=5, n_redundant=0, random_state=42)
# ANOVA SVM-C
anova_filter = SelectKBest(f_regression, k=5)
clf = svm.SVC(kernel='linear')
anova_svm = Pipeline([('anova', anova_filter), ('svc', clf)])
anova_svm.set_params(anova__k=10, svc__C=.1).fit(X, y)
# access coefficients
print(anova_svm['svc'].coef_)

model.coef_ выполняет работу, .best_params_ - этообычно ассоциируется с GridSearch, то есть оптимизация гиперпараметра.

В вашем конкретном случае попробуйте: model['logistic_regression'].coefs_.

1 голос
/ 30 октября 2019

Пример для получения coefs в pipeline.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.pipeline import Pipeline

X, y = load_iris(return_X_y=True)

pipeline = Pipeline([('lr', LogisticRegression(penalty = 'l2', 
                                               C = 10))])
pipeline.fit(X, y)

pipeline['lr'].coef_

array([[-0.42923513,  2.08235619, -4.28084811, -1.97174699],
       [ 1.06321671, -0.08077595, -0.46911772, -2.3221883 ],
       [-0.63398158, -2.00158024,  4.74996583,  4.29393529]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...