达观杯智能文本处理挑战赛-模型优化

网格搜索法

网格搜索法是一种通过遍历给定的参数组合来优化模型的算法。针对每个参数组合来测试时,要对模型的表现进行量化,从而最后选出分数最高的参数组合。

实现网格搜索法:

class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’, return_train_score=’warn’)

def gride_search(model,para):
    grid = GridSearchCV(model,para,cv = 5,scoring  = 'accuracy',n_jobs = 4)
    grid = grid.fit(x_train,y_train)
    if hasattr(model,'decision_function'):
        y_predict_pro = grid.decision_function(x_test)
        y_default_predict_pro = model.decision_function(x_test)
    else:
        y_predict_pro = grid.predict_proba(x_test)[:,1]
        y_default_predict_pro = model.predict_proba(x_test)[:,1]
    
    print (grid.best_score_)
    print (model.get_params)
    print (grid.best_params_)
  

如何评分-交叉验证法

交叉验证法是给模型评分的经典算法。

K折交叉验证中,我们用到的数据是训练集中的所有数据。将训练集的所有数据平均划分成K份(通常选择K=10),取第K份作为验证集,验证集就像用来估计高考分数的模拟题,余下的K-1份作为交叉验证的训练集。

针对每个参数组合进行实验时,都要进行k折交叉验证,这样得到k个验证分数,k个验证分数的均值就是这个模型的验证分数。

结合网格搜索法,获得验证分数最高的参数组合,训练就是最优模型。

模型融合

使用stacking策略进行模型集成。


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))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值