Python----python实现机器学习中的各种距离计算及文本相似度算法
来源:互联网 发布:淘宝roi什么意思 编辑:程序博客网 时间:2024/05/01 23:09
来源:http://blog.csdn.net/AlanConstantineLau/article/details/69053585
import numpy as npimport math# 依赖包numpy、python-Levenshtein、scipydef Euclidean(vec1, vec2): npvec1, npvec2 = np.array(vec1), np.array(vec2) return math.sqrt(((npvec1-npvec2)**2).sum())# euclidean,欧式距离算法,传入参数为两个向量,返回值为欧式距离def Manhattan(vec1, vec2): npvec1, npvec2 = np.array(vec1), np.array(vec2) return np.abs(npvec1-npvec2).sum()# Manhattan_Distance,曼哈顿距离def Chebyshev(vec1, vec2): npvec1, npvec2 = np.array(vec1), np.array(vec2) return max(np.abs(npvec1-npvec2))# Chebyshev_Distance,切比雪夫距离def Minkowski(vec1, vec2, params): pass# MinkowskiDistance 闵可夫斯基距离,其实就是上面三种距离的集合,这里就不重复了。# def Standardized_Euclidean(vec1, vec2, v):# from scipy import spatial# npvec = np.array([np.array(vec1), np.array(vec2)])# return spatial.distance.pdist(npvec, 'seuclidean', V=None)# Standardized Euclidean distance,标准化欧氏距离# 在对长方体区域进行聚类的时候,普通的距离无法满足要求。# 按照普通的距离聚类出的大多是圆形的区域,这时候要采用标准的欧式距离。# 参考 标准化欧式距离:http://blog.csdn.net/jinzhichaoshuiping/article/details/51019473def Mahalanobis(vec1, vec2): npvec1, npvec2 = np.array(vec1), np.array(vec2) npvec = np.array([npvec1, npvec2]) sub = npvec.T[0]-npvec.T[1] inv_sub = np.linalg.inv(np.cov(npvec1, npvec2)) return math.sqrt(np.dot(inv_sub, sub).dot(sub.T))# MahalanobisDistance,马氏距离def Edit_distance_str(str1, str2): import Levenshtein edit_distance_distance = Levenshtein.distance(str1, str2) similarity = 1-(edit_distance_distance/max(len(str1), len(str2))) return {'Distance': edit_distance_distance, 'Similarity': similarity}# Levenshtein distance,编辑距离,用于计算两个字符串之间的编辑距离,传入参数为两个字符串def Edit_distance_array(str_ary1, str_ary2): len_str_ary1 = len(str_ary1) + 1 len_str_ary2 = len(str_ary2) + 1 matrix = [0 for n in range(len_str_ary1 * len_str_ary2)] for i in range(len_str_ary1): matrix[i] = i for j in range(0, len(matrix), len_str_ary1): if j % len_str_ary1 == 0: matrix[j] = j // len_str_ary1 for i in range(1, len_str_ary1): for j in range(1, len_str_ary2): if str_ary1[i-1] == str_ary2[j-1]: cost = 0 else: cost = 1 matrix[j*len_str_ary1+i] = min(matrix[(j-1)*len_str_ary1+i]+1, matrix[j*len_str_ary1+(i-1)]+1, matrix[(j-1)*len_str_ary1+(i-1)] + cost) distance = int(matrix[-1]) similarity = 1-int(matrix[-1])/max(len(str_ary1), len(str_ary2)) return {'Distance': distance, 'Similarity': similarity}# 针对列表改写的编辑距离,在NLP领域中,计算两个文本的相似度,是基于句子中词和词之间的差异。# 如果使用传统的编辑距离算法,则计算的为文本中字与字之间的编辑次数。这里根据编辑距离的思维,# 将编辑距离中的处理字符串中的字符对象,变成处理list中每个元素def Cosine(vec1, vec2): npvec1, npvec2 = np.array(vec1), np.array(vec2) return npvec1.dot(npvec2)/(math.sqrt((npvec1**2).sum()) * math.sqrt((npvec2**2).sum()))# Cosine,余弦夹角# 机器学习中借用这一概念来衡量样本向量之间的差异。# 也可以使用在余弦相似度算法中
阅读全文
0 0
- Python----python实现机器学习中的各种距离计算及文本相似度算法
- python实现机器学习中的各种距离计算及文本相似度算法
- python文本相似度之距离计算详细介绍
- 各种相似度计算的python实现
- python文本相似度计算
- python文本相似度计算
- 机器学习中的各种距离计算公式
- python 机器学习中各种距离
- python 计算文本的相似度
- python自然语言处理-----计算文本相似度
- python专业方向 | 文本相似度计算
- 机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用
- 机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用
- 余弦方法计算相似度算法--Python实现 Java实现
- 机器学习中的各种相似度度量
- 机器学习:AdaBoost 算法及Python实现
- 【转载】机器学习计算距离和相似度的方法
- 【python】python自然语言处理-----计算中文文本相似度
- Node.js Stream流
- 1012. 数字分类 (20)
- 用O(1)时间,删除一个链表节点(3)
- 可靠免费的天气接口
- 20170831
- Python----python实现机器学习中的各种距离计算及文本相似度算法
- MyBatis 在 @Select 写 IN SQL
- Linux学习——进程学习笔记
- [NOIP模拟赛]锦标赛
- 周中记录--2017、8、31
- python阶乘末尾0的个数
- sqlite database is locked
- hexo github搭建个人博客 最新版!
- Linux 远程登陆安全加固的方案,附带用户行为简单监控脚本