task3-模型融合
刚刚看点评才发现,特征工程的评分出错了,这里把逻辑回归作为元模型了。
from sklearn.linear_model import LogisticRegression
from sklearn import svm
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier,GradientBoostingClassifier
from xgboost.sklearn import XGBClassifier
from lightgbm.sklearn import LGBMClassifier
from mlxtend.classifier import StackingClassifier
from sklearn.model_selection import cross_val_score
lr = LogisticRegression(C = 0.1, penalty = 'l1')
sm = svm.SVC(C = 0.1, kernel = 'linear')
tr = DecisionTreeClassifier(max_depth=5,min_samples_split=50,min_samples_leaf=60, max_features=9, random_state =2333)
rfc = RandomForestClassifier(n_estimators=500,max_depth=5, random_state=2333)
gbdtc= GradientBoostingClassifier(n_estimators= 250, subsample=0.9,random_state=2333)
xgbc = XGBClassifier(max_depth=3, min_child_weight=5)
lgbc = LGBMClassifier( max_depth=3, min_child_weight=11)
sclf = StackingClassifier(classifiers=[sm, tr, rfc, gbdtc, xgbc,lgbc],
meta_classifier=lr)
print('5-fold cross validation:\n')
for clf, label in zip([sm, tr, rfc, gbdtc, xgbc,lgbc,sclf],
['svm.SVC_linear',
'DecisionTree',
'RandomForestClassifier',
'GradientBoosting',
'xgb.XGBClassifier',
'lgb.LGBMClassifier',
'StackingClassifier',
]):
scores = cross_val_score(clf, X_train, y_train,
cv=5, scoring='accuracy')
print("Accuracy: %0.2f (+/- %0.2f) [%s]"
% (scores.mean(), scores.std(), label))
另外三个模型得分是:
0.79 [xgb.XGBClassifier]
0.79 [lgb.LGBMClassifier]
0.79 [StackingClassifier]