一个简单的KNN实现方法
2024-01-07 17:33:46
对于许多离散问题,经过神经网络解决再通过softmax之后每一个值在[0,1]之间的连续变量,想要将其离散化,即离散化到每个元素都是 binary-variable,即 0-1 ,这时可以用KNN方法,其实就是找到与这个向量的方差最小的K个临近向量。
做个简单的示例如下:
import itertools
import numpy as np
def knn(x,N, k=4):
k_nn = np.array(list(map(list, itertools.product([0, 1], repeat=N))))
#这句话的意思是生成2^N个 0,1组成的向量,即穷尽探索空间。
# the 2-norm
sqd = ((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-neighbors
print(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.
结果示例:
文章来源:https://blog.csdn.net/qq_38480311/article/details/135439370
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!