美文网首页Deep Learning
Python_openCV_K邻近值

Python_openCV_K邻近值

作者: yuanthu | 来源:发表于2020-05-26 00:48 被阅读0次

    k-Nearest Neighbor借助k空间来描述统计上的相似, 在k-Space中, 临近的点被表示为同一个k值, 所以才会是临近即相似的k-NN.

    综合说如果要将一个观察的现象映射到某一个空间, 我们的做法依次如是说:

    1. 先将观察的现象转化为可观测的量, 赋予某种离散近似-->quantitative presentation.
    2. 寻找某种函数f, 存在f(x_1,x_2,x_3,x_4....x_n)--->k(x_1,x_2,x_3,x_4....x_n).
    3. 这个模型参数太多, 整合一些没必要的 (dimensionality reduction), 也就是特征提取和压缩. f(x_1,x_2,x_3,x_4....x_m)--->k(x_1,x_2,x_3,x_4....x_m), (m<<n).
    4. 这个x_1,x_2,x_3,x_4....x_m构成的向量空间就是一个k-Space, 然而这里每个x_1,x_2,x_3,x_4....x_m所对应的点就是我们已知的解决方案 (训练的结果s),
    5. 随后就是每一次新的现象的观察, 转化为测量, 映射到这个空间, 寻找离测量最近的k矢, 然后认为二者相等.
    6. 大家可以发现, 这个模型在配准时候, 是没有参数的, 也就是很理想的一劳永逸, 对于这种non-parametric模型有个非常恰当的名字叫lazy learning. 这也为后来人们改进他做了铺垫, 如果需要植入一些变量, 扩大feature vector 的维数并非明智, 可以为每个维度增加一些类似和弦的东西以求取在坐标变换下存在不变分量, 这就是tensors.
    # recall the function to train the data
    knn_1 = cv2.ml.KNearest_creat()
    knn_1.train(train_data, cv2.ml.ROW_SAMPLE, train_data_lable)
    #employing k-NN to hit the result, and the result is an array contained 10 elements 
    ret, results, neighbors, dist = knn.findNearest(test, 10)
    

    对于tensor呢, Deep learning 书中如是说: In the general case, an array of numbers arranged on a regular grid with an available number of axes is known as a tensor. We denote a tensor named “A” with this typeface: A. We identify the element of A at coordinates (i, j, k)by writing A(i, j, k). deep learning呢, 其实就是一种任务挖掘与分解, 他尝试用简单的representations来表述复杂的representations, generally speaking, 这种简单的representations 是无法直接被观察到的, 有点像降维映射. 我的理解, 他是一种和弦, 比如一个和三弦.
    拨一个弦是一阶张量, 组合数A31=3; 同时拨两个弦的和弦是二阶张量, 结果是9, 数学排列组合A32 +A31;同时拨三弦是三阶张量, 组合数是C31(A32+A31)=27; 同时拨四个弦是C31(C31(A32+A31))=81.

    相关文章

      网友评论

        本文标题:Python_openCV_K邻近值

        本文链接:https://www.haomeiwen.com/subject/uyypahtx.html