我正在尝试将StackingClassifier与Logistic回归(二进制分类器)一起使用。
样例代码:

from sklearn.datasets import load_iris
from mlxtend.classifier import StackingClassifier
from sklearn.linear_model import LogisticRegression


iris = load_iris()
X = iris.data
y = iris.target

y[y == 2] = 1 #Make it binary classifier

LR1 = LogisticRegression(penalty='l1')
LR2 = LogisticRegression(penalty='l1')
LR3 = LogisticRegression(penalty='l1')
LR4 = LogisticRegression(penalty='l1')
LR5 = LogisticRegression(penalty='l1')


clfs1= [LR1, LR2]
clfs2= [LR3, LR4, LR5]

cls_=[]
cls_.append(clfs1)
cls_.append(clfs2)

sclf = StackingClassifier(classifiers=sum(cls_,[]),
    meta_classifier=LogisticRegression(penalty='l1'), use_probas=True, average_probas=False)

sclf.fit(X, y)

sclf.meta_clf_.coef_ #give the weight values


对于每个分类器,初始逻辑回归给出两个类别的概率值。当我使用堆叠5个分类器时,sclf.meta_clf_.coef_给出10个权重值。


  数组([[-0.96815163,1.25335525,-0.03120535,0.8533569,-2.6250897,
           1.98034805,-0.361378、0.00571954,-0.03206343、0.53138651]])


我对权重值的顺序感到困惑。手段


第一次逻辑回归的第一个两个值(-0.96815163, 1.25335525)LR1吗?
第一次逻辑回归的第二个两个值(-0.03120535, 0.8533569)LR2吗?


我想找出用于堆栈分类器的哪个Logistic回归(LR)的值。

请帮忙。

最佳答案

如果您的输出是:


  数组([[-0.96815163,1.25335525,-0.03120535,0.8533569,-2.6250897,
  1.98034805,-0.361378、0.00571954,-0.03206343、0.53138651]])


然后,

-0.96815163、1.25335525:LR1的概率为0和1

-0.03120535、0.8533569:LR2的概率为0和1

-2.6250897,1.98034805:LR3的概率为0和1

-0.361378、0.00571954:LR4的概率为0和1

-0.03206343、0.53138651:LR5的概率为0和1

关于python - 如何使用StackingClassifier + Logistic回归(二进制分类)查找系数的特征名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55696386/

10-14 05:14