zoukankan      html  css  js  c++  java
  • 机器学习之KNN算法

    定义

    如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
    knn是一种非常古老而且简单的分类方法

    欧式距离

    a(a1,a2,a3),b(b1,b2,b3) 两点的欧式距离是

    因为计算的特征值的平方,所以计算前需要先进行特征处理

    sklearn k-近邻算法API

    sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')

    处理流程

    1、数据集的处理
    2、分割数据集
    3、对数据集进行标准化
    4、estimator流程进行分类预测

    存在的问题

    k值取多大?有什么影响?

    1. k值取很小:容易受异常点影响
    2. k值取很大:容易受最近数据太多导致比例变化

    优缺点

    • 优点:简单,易于理解,易于实现,无需估计参数,无需训练
    • 缺点:
    1. 懒惰算法,对测试样本分类时的计算量大,内存开销大
    2. 必须指定K值,K值选择不当则分类精度不能保证

    交叉验证与网格搜索

    定义

    交叉验证:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同
    的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。

    网格搜索:通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组
    合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。

    API

    sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)

    • estimator:估计器对象

    • param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}

    • cv:指定几折交叉验证

    • fit:输入训练数据

    • score:准确率
      结果分析:

    • best_score_:在交叉验证中测试的最好结果

    • best_estimator_:最好的参数模型

    • cv_results_:每次交叉验证后的测试集准确率结果和训练集准确率结果

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/longyunfeigu/p/9254653.html
Copyright © 2011-2022 走看看