美文网首页
超参数网格搜索

超参数网格搜索

作者: 囧书 | 来源:发表于2018-11-22 20:07 被阅读88次

    在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

    我们需要使用一些工具和方法找出最优超参数,网格搜索是一种。
    sklearn 提供了一个 GridSearchCV 类,可实现网络搜索。

    from sklearn.model_selection import GridSearchCV
    

    网格搜索的建立在交叉验证的基础上。
    交叉验证对训练集等分成N份,N为用户指定的值,比如可指定为10,即为10折交叉验证
    将其中一份作为验证集,其余N-1份作为训练集,经过N次测试,每次都更换不同的验证集,得到N个模型结果,取最优结果。

    例如对KNN的K值进行参数调优,把一组K值传入网格搜索中,找出最优值:

    # 加载iris数据集,并构建knn模型,此处省略
    # 超参数组
    params = {"n_neighbors": [3, 5, 8, 12]}
    # param_grid为参数组字典,cv为多少折交叉验证
    search = GridSearchCV(knn, param_grid=params, cv=10)
    search.fit(data_train, target_train)
    # 交叉验证中最好的准确率
    print(search.best_score_)
    # 最好的模型
    print(search.best_estimator_)
    # 最好的参数
    print(search.best_params_)
    # 网格搜索准确率
    print(search.score(data_test, target_test))
    

    输出:

    ****************************** 交叉验证中最好的准确率 ******************************
    0.9732142857142857
    ****************************** 最好的模型 ******************************
    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
               metric_params=None, n_jobs=1, n_neighbors=8, p=2,
               weights='uniform')
    ****************************** 最好的参数 ******************************
    {'n_neighbors': 8}
    ****************************** 网格搜索准确率 ******************************
    0.9473684210526315
    

    相关文章

      网友评论

          本文标题:超参数网格搜索

          本文链接:https://www.haomeiwen.com/subject/ohrrqqtx.html