【机器学习-贷款用户逾期情况分析】4.模型调优

4.0 任务说明

使用网格搜索法对7个模型进行调优(调参时采用五折交叉验证的方式),并进行模型评估。

 

4.1 网格搜索与K折验证

网格搜索算法是一种通过遍历给定的参数组合来优化给定模型性能的方法。我们可以直接调用gridsearchcv()函数实现对给定数据集和模型的基于k折验证的网格搜索方法。

函数如下:

GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise’, return_train_score=’warn’)

主要参数说明:

(1)estimator

选择使用的分类器,并且传入除需要确定最佳的参数之外的其他参数。每一个分类器都需要一个scoring参数,或者score方法。

(2)param_grid

需要最优化的参数的取值,值为字典或者列表。

(3)scoring=None

模型评价标准,默认None,这时需要使用score函数;或者如scoring='roc_auc',根据所选模型不同,评价准则不同。

(4) cv=None

交叉验证参数,默认None,使用三折交叉验证。指定fold数量,默认为3。

常用方法和属性:

grid.fit():运行网格搜索

cv_results(以前叫_grid_scores_):给出不同参数情况下的评价结果

best_params_:描述了已取得最佳结果的参数的组合

best_score_:提供优化过程期间观察到的最好的评分

调用实例,我这里以决策树作示例:

from sklearn.model_selection import GridSearchCV,KFold
from sklearn.metrics import make_scorer, fbeta_score, accuracy_score

clf = tree.DecisionTreeClassifier(random_state=80)
k_fold = KFold(n_splits=5)
params = {'max_depth':range(1,10),'criterion':np.array(['entropy','gini'])}
scoring_fnc = make_scorer(accuracy_score)
grid = GridSearchCV(clf, param_grid=params,scoring=scoring_fnc,cv=k_fold)
grid = grid.fit(x_train, y_train)

然后看看最佳模型属性值

cv_results=grid.cv_results_
best_params=grid.best_params_
best_score=grid.best_score_
#print (cv_results )
print ('best params: ',best_params)
print('best score: %f'%best_score)

r = grid.score(x_train,y_train)
print("R值(准确率):",r)

我这里把模型训练后在训练集上的准确率也打印下来对比一下。运行后如图:

这里需要注意一下的是,best score是在网格搜索过程中,最佳参数在K次在训练集的(K-1)上作训练,余1训练集上做验证然后准确率取平均算出来的准确率,所以我们最佳参数模型找到之后用这个模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值