我正在尝试使用StackingClassifier和Logistic回归(Binary Classifier)。示例代码:
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