机器学习之距离计算

来源:互联网 发布:linux怎么退出vim 编辑:程序博客网 时间:2024/06/06 02:37

神经网络的输入模式向量的相似性测量可用向量之间的距离来衡量。常用的方法有欧氏距离法和余弦法两种。
(1)欧式距离法
设X,Xi为两向量,其间的欧式距离
这里写图片描述
d越小,X与Xi越接近,两者相似,当d=0,时,X=Xi,以d=T(常数)为依据,可对输入向量模式进行聚类分析:
这里写图片描述

这里写图片描述

(2)向量的欧式距离计算:

这里写图片描述

# coding=utf-8from numpy import *from numpy import linalgvector1 = mat([1, 2, 3])vector2 = mat([4, 5, 6])print sqrt((vector1 - vector2) * (vector1 - vector2).T)  # 手动print linalg.norm(vector1 - vector2)  # 库函数#结果分别为:[[ 5.19615242]]5.19615242271

(3)矩阵的欧式距离计算:
第一个矩阵为(m,n),第二个矩阵为:(k,p)
要想计算矩阵的欧式距离得到矩阵为(m,p)则n=k

from numpy import *from numpy import linalgmatA = mat([[1, 0]])matB = mat([[1,3,6], [0, 2,7]])def distEclud( matA, matB):    ma, na = shape(matA);    mb, nb = shape(matB);    rtnmat = zeros((ma, nb))    for i in xrange(ma):        for j in xrange(nb):            rtnmat[i, j] = linalg.norm(matA[i, :] - matB[:, j].T)    return rtnmatprint  distEclud(matA,matB)#结果为:[[ 0.          2.82842712  8.60232527]]

(4)向量和矩阵的区别
矩阵是由m×n个数组成的一个m行n列的矩形表格.特别地,一个m×1矩阵也称为一个m维列向量;而一个1×n矩阵 ,也称为一个n维行向量.
依上定义可以看出:向量可以用矩阵表示,且有时特殊矩阵就是向量.
简言之就是矩阵包含向量.

机器学习距离计算总结:http://blog.csdn.net/xbinworld/article/details/43612603