• Tensorflow-K近邻算法


    一、实验目的

    1.掌握使用TensorFlow进行KNN操作

    2.掌握KNN 算法的原理

    二、实验原理

    knn的基本原理:

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

    整体的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在分类决策上只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别。

    KNN算法要解决的核心问题是K值选择,它会直接影响分类结果。如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

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

    import tensorflow.compat.v1 as tf
    tf.disable_v2_behavior()
    
    #from tensorflow.examples.tutorials.mnist import input_data
    import input_data
    import numpy as np
    
    #导入实验所需的数据
    mnist = input_data.read_data_sets("D:a作业wjm大三寒假作业深度学习算法部分MNIST_data",one_hot = True)
    #设置训练集与测试集的batch大小
    Xtr,Ytr=mnist.train.next_batch(5000)
    Xte,Yte=mnist.test.next_batch(200)
    #构造计算图,使用占位符placeholder函数构造变量xtr,xte
    xtr=tf.placeholder("float",[None,784])
    xte=tf.placeholder("float",[784])
    #求数据之间的距离,并取最小的值
    distance = tf.reduce_sum(tf.abs(tf.add(xtr,tf.negative(xte))),reduction_indices=1)
    pred=tf.argmin(distance,0)
    #初始化全部变量
    accuracy=0
    init=tf.global_variables_initializer()
    #使用tf.Session()创建Session会话对象,会话封装了Tensorflow运行时的状态和控制
    with tf.Session() as sess:
        sess.run(init)
        #训练模型,并用测试数据预测其准备率
        for i in range(len(Xte)):
            nn_index = sess.run(pred, feed_dict={xtr: Xtr, xte: Xte[i, :]})
            print("Test", i , "Prediction:", np.argmax(Ytr[nn_index]), "True Class:", np.argmax(Yte[i]))
            if np.argmax(Ytr[nn_index]) == np.argmax(Yte[i]):
                accuracy += 1./len(Xte)
            print("Done!")
            print("accuacy:" ,accuracy)
    View Code

  • 相关阅读:
    【限时领奖】消息队列 MNS 训练营重磅来袭,边学习充电,边领充电宝~
    从函数计算到 Serverless 架构
    微服务治理热门技术揭秘:无损上线
    合作再升级!云原生加速器成员企业云霁科技获得阿里云产品生态集成认证
    开源小白到核心开发——我与 sealer 的成长故事
    【有奖评测局】阿里云容器镜像 ACR 测评团限时招募中!
    MSE 费芮新金融行业标杆案例
    NBU异构还原Oracle完整备份的一些总结
    Symantec NetBackup 8.1安装部署
    NFS高可用(NFS+keepalive+Sersync)
  • 原文地址:https://www.cnblogs.com/hhjing/p/14332191.html
Copyright © 2020-2023  润新知