一. 网格搜索(Grid Search)
1. 概述
网格搜索是一种调参手段,是一种穷举搜索,在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。通俗的来说就是把所有参数组合的可能性都试一遍,然后找到性能最好的参数组合。
2.弊端
耗时;参数越多,候选值越多,耗费时间越长!所以,一般情况下,先定一个大范围,然后再细化。即
二. 交叉验证
交叉验证是用来检验模型好坏的一种方式,由于我前面有博客已经总结过,这里就不在赘述了,直接放上链接 https://blog.youkuaiyun.com/orient928/article/details/88902151
三. 模型融合
## 使用多模型实现
from mlxtend.classifier import StackingClassifier
lr_model = LogisticRegression()
svm_model = LinearSVC()
lgbm_model = lgb.sklearn.LGBMClassifier()
dt_model = DecisionTreeClassifier()
sclf = StackingClassifier(classifiers=[lr_model,svm_model,lgbm_model],meta_classifier=dt_model)
sclf.fit(x_train,y_train)
for clf,label in zip([lr_model,svm_model,lgbm_model,sclf],['逻辑回归','SVM','LightGBM','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))
结果输出:
1| Accuracy: 0,737207 [ 逻辑回归 ]
2| Accuracy: 0,729873 [ SVM ]
3| Accuracy: 0,73786 [ lightdbm ]
4| Accuracy:0.78784 [ StackingClassifier ]