KNeighborsClassifier 分类模型

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

KNeighborsRegressor回归模型

class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
参数 n_neighbors int型,可选,k的值
weights

字符类型或callable类型,可选,含义:

uniform:所有示例都一视同仁

distance:权重为距离的倒数,距离近的对分类判决影响大

[callable]:用户自定义函数,入参为距离数组,出参为权重数组

algorithm

可选,含义:

ball_tree:使用球体树

kd_tree:使用kd树

brute:暴力搜索

auto:根据fit函数入参决定最合适的方法

注意:当输入数据稀疏,会忽略并统一用brute

leaf_size

int型,可选,默认值30

决定kd树和球体树的叶子节点大小,影响树构建和查询的速度,还有存储大小

p

integer,可选,默认值2

表示距离度量Minkowski 距离的p幂次参数,p=2 为欧几里得距离,p=1 为曼哈顿距离

metric string或callable类型,默认为minkowski,树的距离度量
metric_params 距离度量函数的其他关键参数,默认值None
n_jobs 近邻搜索的并行度,默认为None,表示1;-1表示使用所有cpu
属性 classes_ (n_classes,) 数组,label数,回归模型没有
effective_metric_ string或callable类型,距离度量机制,与metric对应
effective_metric_params_ dict类型,度量函数的关键参数
outputs_2d_ bool型,y的格式为 (n_samples, ) 或 (n_samples, 1) 为true,回归模型没有

algorithm 和leaf_size 的选择参考: Nearest Neighbors

注意:k近邻算法,若第k个近邻和第k+1个近邻对目标x距离相同,但label不同,结果取决于训练集的顺序

使用示例

创建模型

X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3) #k为3
neigh.fit(X, y)
print(neigh.predict([[1.5]]))
#输出
[0]
print(neigh.classes_)
print(neigh.effective_metric_)
print(neigh.outputs_2d_)
输出:
[0 1]
euclidean
False
X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsRegressor
neigh = KNeighborsRegressor(n_neighbors=2) #k为2
neigh.fit(X, y)
print(neigh.predict([[1.5]]))
#输出
[0.5]
  • 算法为auto,自动选择是暴力还是kd树、球体树
  • 叶子大小30
  • 距离度量为欧氏距离
  • 并行度为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) 预测X的类别
predict_proba(self, X) 返回X的概率估计,回归模型没有
score(self, X, y[, sample_weight]) 返回指定测试集的平均准确度
set_params(self, \*\*params) 设置模型参数
neigh.get_params()
输出:
{'algorithm': 'auto','leaf_size': 30,'metric': 'minkowski','metric_params': None,'n_jobs': None,'n_neighbors': 3,'p': 2,'weights': 'uniform'}
print(neigh.kneighbors([[1.1]])) # 返回实例1.1最近3个近邻和对应的距离
输出:
(array([[0.1, 0.9, 1.1]]), array([[1, 2, 0]]))
#第一个array 是距离,第二个是对应的下标
A = neigh.kneighbors_graph(X,mode='connectivity')
A.toarray()
输出:
array([[1., 1., 1., 0.],[1., 1., 1., 0.],[0., 1., 1., 1.],[0., 1., 1., 1.]])
#返回的是每个样本和k近邻的连通度,第一个样本是[1., 1., 1., 0.],表示k个近邻中第1、2、3个样本连通度为1
A = neigh.kneighbors_graph(X,mode='distance')
A.toarray()
输出:
array([[0., 1., 2., 0.],[1., 0., 1., 0.],[0., 1., 0., 1.],[0., 2., 1., 0.]])
# 每项是每个样本与k近邻的距离
neigh.predict([[1.1]])
#输出
array([0])
neigh.predict_proba([[1.1]])
#输出
array([[0.66666667, 0.33333333]])
因为1.1 的3个近邻为0,1,2样本,其中两个是0,一个是1,所以0的概率是0.66666667
print(neigh.score([[1.1]],[1]))
print(neigh.score([[1.1]],[0]))
#输出
0.0
1.0
计算模型在指定测试集的得分

knn分类模型 在iris 数据集上的使用

print(__doc__)import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasetsn_neighbors = 15# import some data to play with
iris = datasets.load_iris()# we only take the first two features. We could avoid this ugly
# slicing by using a two-dim dataset
X = iris.data[:, :2]
y = iris.targeth = .02  # step size in the mesh# Create color maps
cmap_light = ListedColormap(['orange', 'cyan', 'cornflowerblue'])
cmap_bold = ListedColormap(['darkorange', 'c', 'darkblue'])for weights in ['uniform', 'distance']:# we create an instance of Neighbours Classifier and fit the data.clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)clf.fit(X, y)# Plot the decision boundary. For that, we will assign a color to each# point in the mesh [x_min, x_max]x[y_min, y_max].x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])# Put the result into a color plotZ = Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmap=cmap_light)# Plot also the training pointsplt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold,edgecolor='k', s=20)plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.title("3-Class classification (k = %i, weights = '%s')"% (n_neighbors, weights))plt.show()

knn回归模型使用

print(__doc__)# Author: Alexandre Gramfort <alexandre.gramfort@inria.fr>
#         Fabian Pedregosa <fabian.pedregosa@inria.fr>
#
# License: BSD 3 clause (C) INRIA# #############################################################################
# Generate sample data
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighborsnp.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
T = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X).ravel()# Add noise to targets
y[::5] += 1 * (0.5 - np.random.rand(8))# #############################################################################
# Fit regression model
n_neighbors = 5for i, weights in enumerate(['uniform', 'distance']):knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)y_ = knn.fit(X, y).predict(T)plt.subplot(2, 1, i + 1)plt.scatter(X, y, color='darkorange', label='data')plt.plot(T, y_, color='navy', label='prediction')plt.axis('tight')plt.legend()plt.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors,weights))plt.tight_layout()
plt.show()

这里给y加入噪声后,如果回归采用的权重是distance,感觉和k选择较小值的影响类似,距离近的影响较大,所以图二对噪声较为敏感

参考:

sklearn.neighbors.KNeighborsClassifier

scikit-learn学习之K最近邻算法(KNN)

机器学习实战 之 kNN 分类

基于scikit-learn包实现机器学习之KNN(K近邻)-完整示例

scikit-learn K近邻法类库使用小结 刘建平大佬的博客

scikit-learn 机器学习:sklearn.neighbors 的k近邻算法使用相关推荐

  1. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

  2. 机器学习7更多关于k近邻算法的思考

    文章目录 一.一些总结 1.缺点1: 2.优化: 3.缺点2: 4.缺点3: 5.缺点4: 二.机器学习流程回顾 一.一些总结 k近邻算法是一个解决分类问题的算法,天然可以解决多分类问题: 不仅如此, ...

  3. 机器学习7/100天-K近邻算法

    Day7 K近邻算法 github: 100DaysOfMLCode What is K-NN k近邻算法是常用的简单分类算法也可用于回归问题. KNN是一个无参的(不需要对数据分布做任何假设).基于 ...

  4. 机器学习实战第二章K近邻算法照葫芦画瓢实践。

    分别实现了最基本的3个DEMO 1.给你若干个带有标签的二维点作为训练集,给定一系列的二维随机点,看其通过训练集,可以被分为哪一类 2.给你N个人的飞行里程数,玩游戏消耗时间百分比和每周消耗冰激凌的公 ...

  5. 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类

    1 背景 这个案例恐怕已经被说的很烂了,机器学习方面不同程度的人对该案例还是有着不同的感觉.有的人追求先理解机器学习背后的理论甚至自己推导一遍相关数学公式,再用代码实现:有的人则满足于能够实现相关功能 ...

  6. 【机器学习】原理与实现k近邻算法

    文章目录 系列文章目录 前言 一.k近邻算法是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了 ...

  7. 机器学习基础 KNN(K近邻)算法及sklearn的基本使用(附带一些基础概念)

    文章目录 一. K-近邻算法简介 1. 什么是K-近邻算法 1.1 K-近邻算法(KNN)概念 1.2 电影类型分析 1.3 KNN算法流程总结 2. 小结 二.K近邻算法api初步使用 1. Sci ...

  8. k近邻算法(k-Nearest Neighbors,kNN)

    k近邻算法 (k-Nearest Neighbors,kNN) 文章目录 k近邻算法 (k-Nearest Neighbors,kNN) 算法原理与思想 算法原理 手工实现 scikit−learns ...

  9. 【白话机器学习】算法理论+实战之K近邻算法

    作者1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻 ...

  10. 2、python机器学习基础教程——K近邻算法鸢尾花分类

    一.第一个K近邻算法应用:鸢尾花分类 import numpy as np from sklearn.datasets import load_iris from sklearn.model_sele ...

最新文章

  1. PHP mysql 写入多条记录_PHP mysql插入多条记录的Array数组获取问题
  2. 初学Golang:web 请求的处理流程
  3. vue商城项目开发:底部导航样式、顶部导航矩阵和轮播图
  4. mysql event type_MySQL 【Row】下的 Event_type
  5. mysql 操作指令详解_Mysql常用命令详解
  6. thinkphp 响应
  7. 使用Visual Studio.Net,系统报告“automation服务器不能创建对象”错误。解决之道运行:regsvr32 scrrun.dll 就可以了。
  8. python123第四周作业_科学计算和可视化
  9. 好程序员技术分析JavaScript闭包特性详解
  10. 自定义char类型字段
  11. es5 html片段拼接,es5的 reduce怎样用在拼接html字符串??? - 社区 - 妙味课堂
  12. 手把手教你开发-滚动效果号码抽奖(QT)
  13. Java Socket聊天室
  14. foxmail 登陆126邮箱
  15. 网络编辑必知常识:什么是PV、UV和PR值
  16. Stellarium 0.19.0 发布,开源 3D 天象模拟软件
  17. 我真的不懂路由器和交换机的区别
  18. WPS文件转Excel文件怎么转?建议看看这些方法
  19. Apache PdfBox 2.0.X 版本解析PDF文档(文字和图片)
  20. yocto-poky

热门文章

  1. 用Maxima画出一些有趣的图
  2. android 动画遮盖,android view用动画实现遮罩效果
  3. IJCAI2022论文合集(持续更新中)
  4. 浏览器主页被篡改修复
  5. C3AE人脸年龄识别算法
  6. tiktok旋转验证码识别
  7. Unity3D 《拥挤城市》3D房子建筑透视效果实现
  8. 第三只眼网络监控软件简单分析,试用及清除
  9. android inflate,android inflate详解
  10. 基于asp.net学员队量化管理评分系统的设计与实现#毕业设计