机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

2024-02-26 1122阅读

温馨提示:这篇文章已超过439天没有更新,请注意相关的内容是否还可用!

文章目录

  • 1.K-近邻算法思想
  • 2.K-近邻算法(KNN)概念
  • 3.电影类型分析
  • 4.KNN算法流程总结
  • 5.k近邻算法api初步使用
    • 机器学习库scikit-learn
      • 1 Scikit-learn工具介绍
      • 2.安装
      • 3.Scikit-learn包含的内容
      • 4.K-近邻算法API
      • 5.案例
        • 5.1 步骤分析
        • 5.2 代码过程

          1.K-近邻算法思想

          假如你有一天来到北京,你有一些朋友也在北京居住,你来到北京之后,你也不知道你在北京的哪个区,假如你来到了北京南站。

          分别问朋友在哪个区,距离多远。

          根据最近朋友所在区比如丰台区,来判断自己是不是也在丰台区。

          这就是K近邻算法的思想,根据最近距离来判断你属于哪个类别。

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          根据你的“邻居”来推断出你的类别

          2.K-近邻算法(KNN)概念

          K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

          定义

          如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

          来源:KNN算法最早是由Cover和Hart提出的一种分类算法

          距离公式

          两个样本的距离可以通过如下公式计算,又叫欧式距离 ,关于距离公式会在后面进行讨论

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          3.电影类型分析

          假设我们现在有几部电影

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想

          我们这里时三列数据,属于三维数据的求解过程

          比如我们求唐人街探案与二次曝光的距离,根据欧氏距离计算如下

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          分别计算每个电影和被预测电影的距离,然后求解

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          然后根据最小距离,或最小的几个距离的众数得到唐人街探案属于哪种片子

          K=5表示,根据5部最小距离的电影来判断,从这8个样本里面拿其中的5个

          在距离最小的5部电影里面,3部属于喜剧片,2部属于爱情片,由众数得知,唐人街探案属于喜剧片

          4.KNN算法流程总结

          1)计算已知类别数据集中的点与当前点之间的距离

          2)按距离递增次序排序

          3)选取与当前点距离最小的k个点

          4)统计前k个点所在的类别出现的频率

          5)返回前k个点出现频率最高的类别作为当前点的预测分类

          5.k近邻算法api初步使用

          机器学习流程:

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          1.获取数据集

          2.数据基本处理

          3.特征工程

          4.机器学习

          5.模型评估

          机器学习库scikit-learn

          1 Scikit-learn工具介绍

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          机器学习有很多库,为什么我们要选这个scikit-learn库呢?

          1.它是Python语言的机器学习工具

          2.Scikit-learn包括许多知名的机器学习算法的实现

          3.Scikit-learn文档完善,容易上手,有丰富的API

          2.安装

          pip install scikit-learn

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          安装好之后可以通过以下命令查看是否安装成功

          import sklearn

          注:安装scikit-learn需要Numpy, Scipy等库

          3.Scikit-learn包含的内容

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          分类、聚类、回归

          特征工程

          模型选择、调优

          4.K-近邻算法API

          sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          参数解析:
          n_neighbors:所选用的近邻数(默认= 5),相当于K.
          weights:预测的权函数,概率值。
               weights的参数设置
                  ‘uniform’:同一的权重,即每个邻域中的所有点都是平均加权的。
                  ‘distance’ :这种情况下,距离越近权重越大,反之,距离越远其权重越小。
                   [callable](可调用):用户定义的函数,它接受一个距离数组,并返回一个包含权重的相同形状的数组
          algorithm :用于计算最近邻居的算法,。有{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}
                   ‘auto’      :根据样本数据自动刷选合适的算法。
                   ‘ball_tree’:构建“球树”算法模型。
                   ‘kd_tree’ :‘’kd树‘’算法。
                   ‘brute’     :使用蛮力搜索,即或相当于Knn算法,需遍历所有样本数据与目标数据的距离,进而按升序排序从而选取最近的K个值,采用投票得出结果。
          leaf_size:叶的大小,针对算法为球树或KD树而言。这个设置会影响构造和查询的速度,以及存储树所需的内存。最优值取决于问题的性质。
          metric:用于树的距离度量。默认度量是Minkowski,p=2等价于标准的欧几里德度量。有关可用度量的列表,可以查阅距离度量类的文档。如果度量是“预先计算的”,则假定X是距离矩阵,在拟合期间必须是平方。
          p:Minkowski度量参数的参数来自sklearn.emeics.pairwise.pairwise_距离。当p=1时,这等价于使用曼哈顿距离(L1),欧几里得距离(L2)等价于p=2时,对于任意的p,则使用Minkowski_距离(L_P)。
          metric_params:度量函数的附加关键字参数,设置应为dict(字典)形式。
          n_jobs:要为邻居搜索的并行作业的数量。None指1,除非在 joblib.parallel_backend背景。-1意味着使用所有处理器,若要了解相关的知识应该具体查找一下。
          
          拥有的方法:
          fit(self, X[, y])
           : 以X为训练数据,y为目标值拟合模型
          get_params(self[, deep])
          : 获取此估计器的参数。
          kneighbors(self[, X, n_neighbors, …])
          : 找到点的K邻域。
          kneighbors_graph(self[, X, n_neighbors, mode])
          : 计算X中点的k-邻域(加权)图
          predict(self, X)
          : 预测提供的数据的类标签
          predict_proba(self, X)
          : 返回测试数据X的概率估计。
          score(self, X, y[, sample_weight])
          : 返回给定测试数据和标签的平均精度。
          set_params(self, \*\*params)
          : 设置此估计器的参数。
          

          5.案例

          5.1 步骤分析

          1.获取数据集

          2.数据基本处理(该案例中省略)

          3.特征工程(该案例中省略)

          4.机器学习

          5.模型评估(该案例中省略)

          5.2 代码过程

          导入模块

          from sklearn.neighbors import KNeighborsClassifier
          #构造数据集
          #x是原始数据,特征。y是类别标签,目标
          x = [[0], [1], [2], [3]]   #x是二维数据,dataframe数据结构
          y = [0, 0, 1, 1]           #y是series数据结构
          #机器学习 -- 模型训练
          # 实例化API
          estimator = KNeighborsClassifier(n_neighbors=2)
          # 使用fit方法进行训练,这行代码执行了,模型就训练好了
          estimator.fit(x, y)
          res = estimator.predict([[1]])
          print(res)
          res2 = estimator.predict([[50]])
          print(res2)
          

          根据训练好的模型,预测未知数据所属类别:

          机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

          由上可知,达到预期效果。大家觉得机器学习有了python库的加持,是不是不太难呢,大家一起加油,继续后面的机器学习之路,欢迎大家点赞评论。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]