tensorflow实现knn(k近邻)算法

molearner molearner     2022-10-08     459

关键词:

首先先介绍一下knn的基本原理:

KNN是通过计算不同特征值之间的距离进行分类。

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

K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

KNN算法要解决的核心问题是K值选择,它会直接影响分类结果。

如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。

如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

下面是knn的TensorFlow实现过程,代码来源于GitHub,稍作修改:

import numpy as np
import tensorflow as tf

#这里使用TensorFlow自带的数据集作为测试,以下是导入数据集代码 
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

Xtrain, Ytrain = mnist.train.next_batch(5000)  #从数据集中选取5000个样本作为训练集
Xtest, Ytest = mnist.test.next_batch(200)    #从数据集中选取200个样本作为测试集


# 输入占位符
xtr = tf.placeholder("float", [None, 784])
xte = tf.placeholder("float", [784])


# 计算L1距离
distance = tf.reduce_sum(tf.abs(tf.add(xtr, tf.negative(xte))), reduction_indices=1)
# 获取最小距离的索引
pred = tf.arg_min(distance, 0)

#分类精确度
accuracy = 0.

# 初始化变量
init = tf.global_variables_initializer()

# 运行会话,训练模型
with tf.Session() as sess:

    # 运行初始化
    sess.run(init)

    # 遍历测试数据
    for i in range(len(Xtest)):
        # 获取当前样本的最近邻索引
        nn_index = sess.run(pred, feed_dict={xtr: Xtrain, xte: Xtest[i, :]})   #向占位符传入训练数据
        # 最近邻分类标签与真实标签比较
        print("Test", i, "Prediction:", np.argmax(Ytr[nn_index]),             "True Class:", np.argmax(Ytest[i]))
        # 计算精确度
        if np.argmax(Ytrain[nn_index]) == np.argmax(Ytest[i]):
            accuracy += 1./len(Xtest)

    print("Done!")
    print("Accuracy:", accuracy)

以上就是使用TensorFlow实现knn的过程。

关注重点:
tensorflow的整体过程是先设计计算图,然后运行会话,执行计算图的过程,整个过程的数据可见性比较差。
以上精确度的计算以及真实标签和预测标签的比较结果其实使用numpy和python的变量。

机器学习分类算法--k近邻算法knn(代码片段)

...器学习应用的流程 importnumpyasnpimportmatplotlib.pyplotasplt实现我们自己的kNN创建简单测试用例raw_data_X=[[3.39353 查看详情

机器学习实战☛k-近邻算法(k-nearestneighbor,knn)(代码片段)

...ff09;k-近邻算法概述原理简介k-近邻算法一般流程伪代码与实现示例:使用kNN改进约会网站的配对效果程序>将文本数据转换到NumPy的解析程序准备数据 查看详情

机器学习-k-近邻算法(代码片段)

TableofContents前言算法介绍距离计算算法实现数据转换K值选取结语前言K-近邻算法(k-nearestneighborsalgorithm),又称为KNN算法,是这学期机器学习课教的第一个算法,也是我接触的第一个机器学习算法。学习之后的感触便是:机器学习... 查看详情

k-近邻(knn)算法

  K-近邻算法(K-NN)  邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。  kNN... 查看详情

k近邻算法(knn)的并行mpi实现

  C语言的串行版本已经前些篇博客给出,现在来讨论给算法的并行程序。该算法有很多种并行的方法,比较好的思路有以下几种。  思路一:  也是最容易想到的,就是将训练集在每台机器上都备份一份,然后将预测数... 查看详情

机器学习实战k-近邻算法实施knn分类算法

2.预测数据分类时,出现‘dict’objecthasnoattribute‘iteritems‘如: 最常见的解决办法是更改环境变量顺序如 注意:哪个版本在上面,cmd中的python版本即是谁。如又如:  然后预测数据所在分类即可实现:  查看详情

class-k近邻算法knn

...近邻算法2模型2.1距离测量2.2k值选择2.3分类决策规则3kNN的实现——kd树3.1构造kd树3.2kd树搜索1k近邻算法knearestneighbor,k-NN,是一种基本分类与回归的方法,输入为实例的特征向量——对应空间的点,输出为实例的类别,可取多类... 查看详情

2.6knn(k近邻算法)

查看详情

k近邻算法——knn(代码片段)

...类别。所以比较特殊的是它不需要训练,易于理解,易于实现。在KNN中,通过计算对象间距离来作为各个对象之间的相似性指标,在这里距离一般使用欧氏距 查看详情

基本分类方法——knn(k近邻)算法

...程中,提到了KNN算法。有点熟悉,上网一查,居然就是K近邻算法,机器学习的入门算法。参考内容如下:http://www.cnblogs.com/charlesblc/p/6193867.html1、kNN算法又称为k近邻分类(k-nearestneighborclass 查看详情

k近邻算法(knn)

1.前言K近邻法(k-nearestneighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用,就是“物以类聚,人以群分”。比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出... 查看详情

k-近邻算法(knn)

...的新样本时,用算法提取训练样本集中和待分类的样本最近邻的K个分类标签(比如样本只有两个特征,在二维坐标系中用点来表示一个样本,选择和新样本点距离最近的K个点)。选取这k个分类标签中出现次数最多的分类,作为... 查看详情

k-近邻算法(knn)

1、K-近邻算法原理 1.1算法特点简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感、无数据输入假定缺点:计算复杂度高、空间复杂度高适用数据范围:数值型和标称型 1... 查看详情

k-近邻算法(knn)

算法简介KNN算法原理是:存在一个样本数据集合(训练样本集),并且样本集合中每个数据都已知该数据的分类。当输入没有标签的新数据时,我们将新数据的特征与已知样本集合进行逐个比较,提取K个最相近的数据的标签,... 查看详情

k近邻算法(knn)与k-means算法的对比

k近邻算法(knn)是一种基本的分类与回归的算法,k-means是一种基本的聚类方法。k近邻算法(knn)基本思路:如果一个样本在特征空间的k个最相似(即特征空间最邻近)的样本大多数属于某一类,则该样本也属于这一类。影响... 查看详情

knn算法(k近邻算法)实现与剖析(代码片段)

KNN(K-NearestNeighbors)算法,又称K近邻算法,单从字面意思我们就能知道,这个算法肯定是和距离有关的。KNN算法的核心思想:在一个特征空间中,如果某个样本身边和他最相邻的K个样本大多都属于一个类别,那么这个样本在很... 查看详情

k-近邻算法(knn)(代码片段)

K-近邻算法(KNN)1KNN介绍2KNN的初步使用3距离度量3.1基本性质3.2常见距离公式3.3距离属性4k值选择5KNN优化—kd树5.1kd树简介5.2构造方法5.3案例分析6数据集6.1获取数据集6.2划分数据集7特征工程—特征预处理7.1归一化7.2标准化... 查看详情

机器学习实战第2章k-近邻算法(k-nearestneighbor,knn)

第2章k-近邻算法<scripttype="text/javascript"src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>KNN概述k-近邻(kNN,k-NearestNeighbor)算法主要是用来进行分类的.KNN场景电影可以按照题材分类,那么如何区分&nbs 查看详情