当前位置: 首页 > news >正文

一个简单的KNN实现方法

对于许多离散问题,经过神经网络解决再通过softmax之后每一个值在[0,1]之间的连续变量,想要将其离散化,即离散化到每个元素都是 binary-variable,即 0-1 ,这时可以用KNN方法,其实就是找到与这个向量的方差最小的K个临近向量。

做个简单的示例如下:

import itertools
import  numpy as npdef knn(x,N, k=4):k_nn = np.array(list(map(list, itertools.product([0, 1], repeat=N))))          
#这句话的意思是生成2^N个 0,1组成的向量,即穷尽探索空间。# the 2-normsqd = ((k_nn - x) ** 2).sum(1)  #计算方差idx = np.argsort(sqd)           #对方差进行排序return k_nn[idx[:k]]            #取方差最小的K个if __name__ == '__main__':x = [0.1, 0.3, 0.6, 0.9]   #一个连续向量                   N =len(x)                  #x的元素个数k_neighbor= knn(x,N)       #执行knn,用来保存K-neighborsprint(x)print(k_neighbor)

k_nn = np.array(list(map(list, itertools.product([0, 1], repeat=N))))          
#这句话的意思是生成2^N个 0,1组成的向量,即穷尽探索空间。例如例子中 N =4, 那么k_nn是一个 2^4 = 16 行的 np.array.

结果示例:

http://www.lryc.cn/news/275317.html

相关文章:

  • Vue实现加减法验证码
  • PDF最强处理工具-StirlingPDF
  • SpringCloud系列篇:入门讲解Spring Cloud是什么
  • GEE:随机数
  • H266/VVC率失真优化与速率控制概述
  • thinkphp6入门(14)-- 多关联模型查询
  • MT8766安卓核心板规格参数_MTK8766核心板模块方案定制
  • k8s的声明式资源管理(yaml文件)
  • Qt中图片旋转缩放操作
  • LeetCode 2125. 银行中的激光束数量【数组,遍历】1280
  • 关于图像分割任务中按照比例将数据集随机划分成训练集和测试集
  • 回文链表【链表】
  • Linux Perf 介绍
  • 【论文阅读】Variational Graph Auto-Encoder
  • 如何把电脑中的项目快速传进Github中?
  • Plantuml之nwdiag网络图语法介绍(二十九)
  • MyBatis接口的方法上使用,定义对应的 SQL 操作
  • (20)Linux初始文件描述符
  • draw.io基础操作和代码高效画图进阶
  • 2024-01-04 用llama.cpp部署本地llama2-7b大模型
  • HTTP打怪升级之路
  • axure RP9.0安装字体图标库fontawesome
  • PiflowX组件-ReadFromUpsertKafka
  • keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
  • CentOS 7 实战指南:文件或目录的权限操作命令详解
  • 我的第一个前端项目,vue项目从零开始创建和运行
  • 【OJ】C++,Java,Python,Go,Rust
  • Flink 任务指标监控
  • Go语言程序设计-第7章--接口
  • 性能优化-OpenMP基础教程(二)