zoukankan      html  css  js  c++  java
  • 【笔记】KNN之网格搜索与k近邻算法中更多超参数

    网格搜索与k近邻算法中更多超参数

    网格搜索与k近邻算法中更多超参数

    网络搜索

    前笔记中使用的for循环进行的网格搜索的方式,我们可以发现不同的超参数之间是存在一种依赖关系的,像是p这个超参数,只有在 weights="uniform"才有意义

    在sklearn中有一种封装好的网格搜索,grid search
    我们首先设置一个数组,其内容可以当成字典来看待
    对于第一组参数而言

       'weights':["uniform"],
              'n_nrightbors':[i for i in range (1,11)]
    

    对于第二组参数而言

       'weights':['distance'],
              'n_neightbors':[i for i in range(1,11)],
              'p': [i for i in range (1,6)]
    

    这样我们就定义好了我们需要的参数的集合,我们也不难发现,超参数的依赖被我们通过这个集合中放在同一个字典中,来表示这种依赖关系

    先创建出一个默认的不传任何参数的KNeighborsClassifier(),然后我们创建出一个knn_clf,通过调用sklearn中的网格搜索方法

      from sklearn.model_selection import GridSearchCV
    

    待加载进来之后,再创建一个对应的实例对象,其中我们需要传入两个参数

      grid_search = GridSearchCV(knn_clf, param_grid)
    

    然后我们就要基于训练数据集来尝试的寻找最佳的模型(fit操作)

      grid_search.fit(X_train,y_train)
    

    使用grid_search.best_estimator_即可查看到最佳的模型所对应的参数

    与之前结果不一样的原因是因为网格搜索的方式更加的复杂,还有交叉验证的方式参与其中,准确度更高
    其他的情况还有

    我们要想拿到最佳参数对应的分类器可以直接

      knn_clf = grid_search.best_estimator_
    

    这样我们就可以直接使用knn_clf来进行预测了
    结果:

      knn_clf.predict(X_test)
    

    准确率:

      knn_clf.score(X_test, y_test)
    

    GridSearchCV中的重要参数

    n_jobs参数
    在并行处理的时候,是可以给你的计算机来分配几个核来处理,默认为1,可以直接传入-1,代表直接将全部的核心都用于操作

    verbose参数
    这是一个输出参数,可以在你运行的情况下进行输出运行的情况,其可以传入一个整数,值越大,信息越详细

    更多的超参数

    事实上,knn还有更多的超参数
    比如更多的距离定义
    ●向量空间余弦相似度Cosine Similarity
    ●调整余弦相似度Adjusted Cosine Similarity
    ●皮尔森相关系数Pearson Correlation Coefficient
    ●Jaccard相似系数Jaccard Coefficient
    我们可以修改metric来更改对距离的定义,其默认的是明科夫斯基距离

    您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
  • 相关阅读:
    (4) 编译 Android-5.0 源码
    (3) 下载 Android-5.0 源码
    (2) 搭建 Android 系统开发环境
    npm 安装 --save-dev 与 --save的使用与区别
    一点目标
    AcWing 875. 快速幂
    Codeforces Round #604 (Div. 2)
    2019年安徽大学ACM/ICPC实验室新生赛(公开赛)D 不定方程
    C语言黑与白问题
    AcWing 92. 递归实现指数型枚举
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14276600.html
Copyright © 2011-2022 走看看