本文目录导读:

在Python中进行数据相似度计算,根据数据类型(文本、数值、集合、向量等)有多种方法,以下是常用的分类及对应方法:
文本相似度
基于统计的方法
- 余弦相似度 - 向量空间模型,适用于词频/词袋
from sklearn.metrics.pairwise import cosine_similarity from sklearn.feature_extraction.text import CountVectorizer
texts = ['I love Python', 'I love programming'] vectorizer = CountVectorizer() vectors = vectorizer.fit_transform(texts) similarity = cosine_similarity(vectors[0], vectors[1])[0][0]
- **TF-IDF + 余弦相似度** - 加权词频,效果更好
```python
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer()
vectors = tfidf.fit_transform(texts)
- Jaccard相似度 - 基于集合交集
def jaccard_similarity(str1, str2): set1, set2 = set(str1.split()), set(str2.split()) return len(set1 & set2) / len(set1 | set2)
基于编辑距离的方法
-
Levenshtein距离 - 编辑操作次数
import Levenshtein similarity = 1 - (Levenshtein.distance(s1, s2) / max(len(s1), len(s2)))
-
difflib (标准库) - 序列匹配器
from difflib import SequenceMatcher similarity = SequenceMatcher(None, s1, s2).ratio()
数值向量相似度
常见距离/相似度
import numpy as np from scipy.spatial.distance import euclidean, cosine, cityblock a, b = np.array([1,2,3]), np.array([4,5,6]) # 欧氏距离(越小越相似) euclidean(a, b) # 曼哈顿距离 cityblock(a, b) # 余弦相似度(越大越相似) 1 - cosine(a, b) # 皮尔逊相关系数 from scipy.stats import pearsonr corr, _ = pearsonr(a, b)
集合相似度
- Jaccard - 交集/并集
- Dice系数 - 2*交集/(|A|+|B|)
- Overlap系数 - 交集/较小集合
def dice_similarity(set1, set2):
return 2 * len(set1 & set2) / (len(set1) + len(set2))
高级语义相似度(NLP)
词嵌入方法
# Word2Vec / GloVe / FastText
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('path_to_model')
similarity = model.similarity('king', 'queen')
# Sentence Transformers(推荐,效果好)
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = model.encode(['I love Python', 'I enjoy coding'])
similarity = cosine_similarity([embeddings[0]], [embeddings[1]])[0][0]
BERT类模型
from transformers import AutoTokenizer, AutoModel
import torch
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained('bert-base-uncased')
# 计算CLS向量或平均池化后计算相似度
结构数据相似度
- 矩阵/表格相似度 - 相关系数矩阵、协方差
- 时间序列相似度 - DTW (Dynamic Time Warping)
from dtaidistance import dtw similarity = dtw.distance(series1, series2) # 越小越相似
内置/第三方库对比
| 方法 | 适用场景 | Python库 |
|---|---|---|
| 余弦相似度 | 文本、向量 | sklearn, scipy |
| Jaccard | 集合、关键词 | 自定义 |
| 编辑距离 | 短文本、字符串 | Levenshtein, difflib |
| 皮尔逊 | 数值序列 | scipy, numpy |
| DTW | 时间序列 | dtaidistance |
| 词嵌入 | 语义相似度 | gensim, sentence-transformers |
选择建议
- 快速简单: difflib (文本) 或 Jaccard (关键词)
- 文本分析: TF-IDF + 余弦相似度
- 语义理解: Sentence-BERT 效果最好
- 数值数据: 皮尔逊或余弦根据需求选择
- 大数据量: 使用 Faiss (Facebook AI Similarity Search) 进行高效索引
需要针对具体数据类型和使用场景的方法吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播