【Machine Learning】通过网格搜索进行调参
来源:互联网 发布:淘宝正道体育假货 编辑:程序博客网 时间:2024/06/05 00:26
在我们日常的进行超参数优化工作时,可以手动去试,也可以使用随机搜索、批量随机搜索和网格搜索等方法调到好的参数,关于网格搜索,sklearn中GridSearchCV用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。
一、参数简介
①estimator:所使用的分类器,如estimator=RandomForestClassifier(njobs=-1),n_jobs为并行数,int:个数,-1表示跟CPU核数一致,默认值为1。
②parameters:需要最优化的参数取值,一般为字典或者列表,如parameters={'n_estimators':[25,30,35],'criterion':('gini','entropy')}。
③scoring:评价标准,每一个分类器都需要一个scoring参数,或者score方法,默认None,这时需要使用score函数;或者如scoring='roc_auc',根据所选模型不同,评价准则不同。如果是None,则使用estimator的误差估计函数。
④cv :交叉验证参数,默认None,使用三折交叉验证。
⑤refit :默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。 ⑥verbose:日志冗长度,int:冗长度,0指不输出训练过程,1指偶尔输出,如果>1是指对每个子模型都输出。
二、实例代码
# -*- coding: utf-8 -*-from sklearn.model_selection import GridSearchCVfrom sklearn.ensemble import RandomForestClassifierfrom scoring import cost_based_scoring as cbs #自己编写的scoringimport picklewith open('../data/training_df.pkl', 'rb') as f: #load数据集 df = pickle.load(f)with open(r'../data/selected_feat_names.pkl', 'rb') as f: #特征和标签的key selected_feat_names = pickle.load(f)print("data loaded")y = df["attack_type"].values #标签,y值X = df[selected_feat_names].values #所有特征值rfc = RandomForestClassifier(n_jobs=-1) #随机森林分类器parameters = { 'n_estimators': [25, 30, 35], 'criterion': ("gini", "entropy")}scorer = cbs.scorer(show=True)if __name__ == '__main__': gscv = GridSearchCV(rfc, parameters, scoring=scorer, cv=3, verbose=2, refit=False, n_jobs=1, return_train_score=False) gscv.fit(X, y) print(gscv.cv_results_) print(gscv.best_params_, gscv.best_score_) print("grid search finished")通过以上搜索后,程序将会返回给定参数值中结果最好的值!
阅读全文
0 0
- 【Machine Learning】通过网格搜索进行调参
- machine learning in coding(python):使用贪心搜索【进行特征选择】
- 【scikit-learn】网格搜索来进行高效的参数调优
- machine learning
- Machine Learning
- machine learning
- Machine Learning
- machine learning
- Machine Learning
- machine learning
- machine learning
- Machine Learning
- Machine Learning
- machine-learning
- machine-learning
- Machine Learning
- Machine Learning
- Machine Learning
- 修改数据库mysql密码
- JDK自带小工具汇总
- python assert的作用
- 01背包
- frame框架
- 【Machine Learning】通过网格搜索进行调参
- [Err] ORA-00979: not a GROUP BY expression
- 【OpenCV3图像处理】查找二值图像的边缘 函数findContours()详解
- 洛谷 P1013 进制位
- *c#在64位上编写32位程序时注册表重定向的问题解决办法**
- Python中sorted函数的用法
- Native/Hybrid/Web App
- 端口
- AVL树的进一步实现