`
huangyongxing310
  • 浏览: 496281 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

KNN 分类算法

 
阅读更多
KNN 分类算法


KNN(K近邻),是以近邻样本的类别的概率大小分类的。默认以距离作为权重
https://www.cnblogs.com/xiaotan-code/p/6680438.html


算法的描述为:
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比。


sklearn:
KNN回归树的类是KNeighborsRegressor。除此之外,还有KNN的扩展,即限定半径最近邻分类树的类RadiusNeighborsClassifier和限定半径最近邻回归树的类RadiusNeighborsRegressor, 以及最近质心分类算法NearestCentroid。

https://www.cnblogs.com/pinard/p/6065607.html(使用比较)

scikit-learn里只使用了蛮力实现(brute-force),KD树实现(KDTree)和球树(BallTree)实现,

KNN算法我们主要要考虑三个重要的要素,对于固定的训练集,只要这三点确定了,算法的预测方式也就决定了。这三个最终的要素是k值的选取,距离度量的方式和分类决策规则。

KNN算法蛮力实现
既然我们要找到k个最近的邻居来做预测,那么我们只需要计算预测样本和所有训练集中的样本的距离,然后计算出最小的k个距离即可,接着多数表决,很容易做出预测。


KD树实现原理
大大节省了计算时间。
如果是KNN分类,预测为K个最近邻里面有最多类别数的类别。如果是KNN回归,用K个最近邻样本输出的平均值作为回归预测值。

球树实现原理



# -*-coding:utf-8 -*-
from sklearn import datasets
# 导入内置数据集模块
from sklearn.neighbors import KNeighborsClassifier
# 导入sklearn.neighbors模块中KNN类
import numpy as np

np.random.seed(0)
# 设置随机种子,不设置的话默认是按系统时间作为参数,因此每次调用随机模块时产生的随机数都不一样设置后每次产生的一样
iris = datasets.load_iris()
# 导入鸢尾花的数据集,iris是一个类似于结构体的东西,内部有样本数据,如果是监督学习还有标签数据
iris_x = iris.data
# 样本数据150*4二维数据,代表150个样本,每个样本4个属性分别为花瓣和花萼的长、宽
iris_y = iris.target
# 长150的以为数组,样本数据的标签
indices = np.random.permutation(len(iris_x))
# permutation接收一个数作为参数(150),产生一个0-149一维数组,只不过是随机打乱的,当然她也可以接收一个一维数组作为参数,结果是直接对这个数组打乱
iris_x_train = iris_x[indices[:-10]]
# 随机选取140个样本作为训练数据集
iris_y_train = iris_y[indices[:-10]]
# 并且选取这140个样本的标签作为训练数据集的标签
iris_x_test = iris_x[indices[-10:]]
# 剩下的10个样本作为测试数据集
iris_y_test = iris_y[indices[-10:]]
# 并且把剩下10个样本对应标签作为测试数据及的标签

knn = KNeighborsClassifier()
# 定义一个knn分类器对象
knn.fit(iris_x_train, iris_y_train)
# 调用该对象的训练方法,主要接收两个参数:训练数据集及其样本标签
iris_y_predict = knn.predict(iris_x_test)
print('iris_y_predict = ')
print(iris_y_predict)
# [1 2 1 0 0 0 2 1 2 0]
# 调用该对象的测试方法,主要接收一个参数:测试数据集
print('iris_y_test = ')
print(iris_y_test)
# [1 1 1 0 0 0 2 1 2 0]

probility = knn.predict_proba(iris_x_test)
print('probility = ')
print(probility)
# [[0.  1.  0. ]
#  [0.  0.4 0.6]
#  [0.  1.  0. ]
#  [1.  0.  0. ]
#  [1.  0.  0. ]
#  [1.  0.  0. ]
#  [0.  0.  1. ]
#  [0.  1.  0. ]
#  [0.  0.  1. ]
#  [1.  0.  0. ]]

# 计算各测试样本基于概率的预测

score = knn.score(iris_x_test, iris_y_test, sample_weight=None)
# 调用该对象的打分方法,计算出准确率
print('score = ')
print(score)
# 0.9
print(iris_x_test[2])
# [6.3,2.3,4.4,1.3]
testData  = [[6.3,2.3,4.4,1.3]]

# n_neighbors=None,表示需要寻找目标样本最近的几个最近邻样本,默认为None,需要调用时给出。return_distance=True:是否需要同时返回具体的距离值。
neighborpoint = knn.kneighbors(testData,5,True)
print('neighborpoint = ')
print(neighborpoint)
# (array([[0.26457513, 0.57445626, 0.59160798, 0.60827625, 0.6164414 ]]), array([[ 79, 132,   1,  13,  27]], dtype=int64))
# neighborpoint = knn.kneighbors(iris_x_test,5,False)
# 计算与最后一个测试样本距离在最近的5个点,返回的是这些样本的序号组成的数组

# 输出准确率计算结果

分享到:
评论

相关推荐

    KNN分类算法的MapReduce并行化实现1

    《KNN分类算法的MapReduce并行化实现》 KNN(K-Nearest Neighbor)算法是一种基于实例的学习方法,广泛应用于数据挖掘和机器学习领域,尤其在分类问题上表现出色。然而,随着大数据时代的到来,传统的单机版KNN算法...

    用Python 实现 KNN 分类算法

    **Python实现KNN分类算法** KNN,全称为k-最近邻(k-Nearest Neighbors),是一种基于实例的学习,也是非参数监督学习方法。它假设数据集中存在一个最佳的分类边界,但并不预先定义这个边界,而是通过计算训练样本...

    改进的kNN分类算法在工业物联网中的应用.pdf

    为了克服这些问题,高增亮等研究人员提出了一种改进的kNN算法,即分布式kNN分类算法(Distributed k-Nearest Neighbors, DkNN),目的是为了提高kNN算法在工业物联网环境中的适用性。分布式kNN算法的核心是设计了一...

    特征加权KNN分类算法在跨境电商人才培养中的应用.pdf

    本文通过调研企业在培养跨境电商人才过程中对素质特征的认可度,利用层次分析法(AHP算法)对特征的重要性进行定量分析,得到各特征的权重值,再通过KNN分类算法对跨境电商人才进行评估,以期构建出一个科学的人才...

    一个高效的KNN分类算法

    KNN算法是数据挖掘技术中比较常用的分类算法,由于其实现的简单性,在很多领域得到了广泛的应用。 但是,当样本容量较大以及特征属性较多时,KNN算法分类的效率就将大大降低

    基于mediapipe和KNN分类算法的健身计数器引体向上计数器深蹲计数器俯卧撑计数器python源码(毕设).zip

    基于mediapipe和KNN分类算法的健身计数器引体向上计数器深蹲计数器俯卧撑计数器python源码(毕设).zip 基于mediapipe和KNN分类算法的健身计数器引体向上计数器深蹲计数器俯卧撑计数器python源码(毕设).zip 基于...

    基于ASO原子搜索优化的特征选择+KNN分类算法(matlab程序和数据)

    基于ASO原子搜索优化的特征选择+KNN分类算法(matlab程序和数据) 1.基于ASO原子搜索优化的特征选择+KNN分类算法(matlab程序和数据) 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 ...

    基于分块后重叠K-means聚类的KNN分类算法.pdf

    基于分块后重叠K-means聚类的KNN分类算法 该论文提出了一种新的KNN分类算法,即基于分块后重叠K-means聚类的KNN分类算法。该算法主要解决了传统KNN算法在大数据环境下的计算量和内存存储问题。该算法首先将样本随机...

    knn分类算法_knn_k近邻_K._数据集分类_近邻分类_源码

    3. 实现kNN分类器:包含kNN的核心逻辑,包括找到k个最近邻、投票决策等。 4. 测试与评估:使用一部分数据作为测试集,运行kNN算法,比较预测结果与真实类别,计算准确率、召回率等评估指标。 四、kNN算法的特点与优...

    n02_KNN_IRIS_Ma_irisKNN_iris_KNN分类算法_knn分类_knniris_

    【标题】"n02_KNN_IRIS_Ma_irisKNN_iris_KNN分类算法_knn分类_knniris_" 指的是一项利用KNN(K-最近邻)算法在鸢尾花数据集(Iris)上的分类实践。这个项目可能是通过MATLAB编程语言实现的,MATLAB是一种广泛用于...

    基于云计算平台的分布式KNN分类算法的设计与实施.pdf

    基于云计算平台的分布式KNN分类算法的设计与实施 本文提出了一种基于云计算平台的分布式KNN分类算法,旨在解决传统KNN算法无法处理大规模数据的问题。该算法基于Hadoop分布式计算平台的MapReduce框架,能够高效地...

    基于k-最近邻图的小样本KNN分类算法.pdf

    基于k-最近邻图的小样本KNN分类算法 KNN(K-Nearest Neighbors)分类算法是一种典型的非参数、有效、较流行的惰性学习方法,其思路简单且易于实现。该算法的核心思想是根据训练样本集中的模式来对未知样本进行分类...

    毕业设计基于mediapipe和KNN分类算法的健身计数器-引体向上计数器-深蹲计数器-俯卧撑计数器Python源码+文档说明

    毕业设计基于mediapipe和KNN分类算法的健身计数器_引体向上计数器_深蹲计数器_俯卧撑计数器Python源码+文档说明本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是...

    大数据下的分布式精确模糊KNN分类算法.pdf

    综上所述,本文提出的基于Spark框架的分布式精确模糊KNN分类算法,为大数据环境下高效分类算法的研究与应用提供了一种新的技术路径。这不仅为大数据处理技术的研究人员和工程师提供了实践案例,也为相关领域的研究和...

    基于粒子群优化的快速KNN分类算法

    【基于粒子群优化的快速KNN分类算法】 KNN(K-Nearest Neighbors)算法是一种经典的监督学习方法,常用于分类和回归问题。它的基本思想是:将未知类别的样本点分配到与其最近的K个已知类别样本点中的多数类别。然而...

Global site tag (gtag.js) - Google Analytics