K近邻算法

概要:K近邻算法(KNeighbors)是实现K近邻算法的一个类,一般都使用欧式距离进行测量。

语言:python

领域:机器学习

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto',leaf_size=30,p=2,metric='minkowski',metric_params=None,n_jobs=1,**kwargs)

参数:

  • n_neighbors : int,optional(default = 5)
    默认情况下kneighbors查询使用的邻居数。就是k-NN的k的值,选取最近的k个点。
  • weights : str或callable,可选(默认=‘uniform’)
    默认是uniform,参数可以是uniform、distance,也可以是用户自己定义的函数。uniform是均等的权重,就说所有的邻近点的权重都是相等的。distance是不均等的权重,距离近的点比距离远的点的影响大。用户自定义的函数,接收距离的数组,返回一组维数相同的权重。
  • algorithm : {‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选
    快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。ball tree是为了克服kd树高纬失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。
  • leaf_size : int,optional(默认值= 30)
    默认是30,这个是构造的kd树和ball树的大小。这个值的设置会影响树构建的速度和搜索速度,同样也影响着存储树所需的内存大小。需要根据问题的性质选择最优的大小。
  • p : 整数,可选(默认= 2)
    距离度量公式。在上小结,我们使用欧氏距离公式进行距离度量。除此之外,还有其他的度量方法,例如曼哈顿距离。这个参数默认为2,也就是默认使用欧式距离公式进行距离度量。也可以设置为1,使用曼哈顿距离公式进行距离度量。
  • metric : 字符串或可调用,默认为’minkowski’
    用于距离度量,默认度量是minkowski,也就是p=2的欧氏距离(欧几里德度量)。
  • metric_params : dict,optional(默认=None)
    距离公式的其他关键参数,这个可以不管,使用默认的None即可。
  • n_jobs : int或None,可选(默认=None)
    并行处理设置。默认为1,临近点搜索并行工作数。如果为-1,那么CPU的所有cores都用于并行工作。

示例代码

X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y) print(neigh.predict([[1.1]]))
print(neigh.predict_proba([[0.9]]))[0]
[[0.66666667 0.33333333]]

10重交叉验证

# 取近邻数为4
start = time.time()
knn = KNeighborsClassifier(n_neighbors=4)
scores = cross_val_score(knn, X, Y, cv=10, scoring='accuracy')
print '用时%f 秒!' % (time.time() - start)
print '近邻数为4的K近邻10重交叉验证评分:', scores
print '近邻数为4的K近邻10重交叉验证平均分:', scores.mean()# 对比取不同近邻数的效果
k_range = range(1, 10)
for k in k_range:start = time.time()knn = KNeighborsClassifier(n_neighbors=k)scores = cross_val_score(knn, X, Y, cv=10, scoring='accuracy')print '用时%f 秒!' % (time.time() - start)print '近邻数为', k,  '的K近邻10重交叉验证平均分:', scores.mean()

KNeighbors相关推荐

  1. 介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势?

    介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势? K近邻(KNN)算法 近邻(Nearest Neighbor)算法既可以用于监督学习(分 ...

  2. KNN(k-NearestNeighbor)

    最近工作中用到求邻近点的方法,于是用上了knn. KNN概述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个 ...

  3. 「摸鱼」神器来了,Python 实现人脸监测制作神器

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 最近都在讨论工作摸鱼,网易云音乐也出了合理摸鱼时间表,今天给大家推荐如何用python实现摸鱼~码住呦! 引言:脸部表情是人类情 ...

  4. 机器学习 KNN算法实践

    作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 KNN算法简介 KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中 ...

  5. ​机器学习中必要的数学基础!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Benjamin Obi Tayo 来源:机器之心 作为一门基础性 ...

  6. 入机器学习大坑,我需要什么样的数学水平?

    点击上方"视学算法",选择"星标" 快速获得最新干货 本文转自机器之心 作为一门基础性学科,数学在数据科学和机器学习领域都发挥着不可或缺的作用.数学基础是理解各 ...

  7. 入机器学习大坑,需要什么样的数学水平?

    选自medium 作者:Benjamin Obi Tayo 机器之心编译 参与:小舟.杜伟 作为一门基础性学科,数学在数据科学和机器学习领域都发挥着不可或缺的作用.数学基础是理解各种算法的先决条件,也 ...

  8. Machine Learning | (3) Scikit-learn的分类器算法-k-近邻

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  9. 密度聚类算法DBSCAN实战及可视化分析

    密度聚类算法DBSCAN实战及可视化分析 目录 密度聚类算法DBSCAN实战及可视化分析 DBSCAN实战及聚类效果可视化 构建分类算法获得预测推理能力 DBSCAN实战及聚类效果可视化 DBSCAN ...

最新文章

  1. luogu P6113 【模板】一般图最大匹配(带花树)
  2. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )
  3. Windows的cmd ping不通vmware的linux系统ip
  4. CodeForces - 1066C Books Queries(思维)
  5. wxpython 多线程_在wxPython中使用线程连续更新GUI的好方法?
  6. 【数据挖掘】数据预处理
  7. php 红包生成算没法,红包生成算法的需求(PHP版本)
  8. 2019-08-12 计划与安排
  9. python getattr用法_python3,定制类,getattr相关用法
  10. Flink本地安装教程
  11. pybaobabdt 推荐一款超高颜值的模型可视化库
  12. linux 中文转unicode,Linux下汉字编码的转换
  13. flash, sparkle, glow, gleam, twinkle, glitter
  14. 游戏任务系统设计思路
  15. 获取iOS设备的型号(iPhone4,iphone5,iPhone5s......)
  16. TP框架中S函数使用方法
  17. ASP.NET页面在IE缓存的清除办法 (转)
  18. python音乐编程_基于python实现音乐播放器代码实例
  19. IntelliJ IDEA快速入门 | 第三十篇:如何来自定义模板呢?
  20. 使用python爬取高德POI数据,并转换为WGS84经纬度坐标的点矢量

热门文章

  1. oracle论坛 南派三叔,关于南派三叔微访谈的不吐不快,想知道路人,书粉,剧粉,都是什么感受...
  2. 年入80W的96年草根站长张思聪
  3. 设计模式:从聚合支付业务的设计来聊聊策略模式
  4. web前端学习(三)——HTML 超链接、列表
  5. HTML5版切水果游戏 HTML5游戏极品源码下载
  6. 税改恐慌症?别急,SAP 增强薪资方案助力 HR 拥抱税改元年
  7. android闹铃备忘录代码,求推荐一个安卓手机上用的闹钟提醒的备忘录便签
  8. 编写Bat脚本调用Vecotr工具软件HexView
  9. RDBMS vs NoSQL
  10. 1311_硬件设计_ICT概念、应用以及优缺点学习小结