距离判别python实现
时间: 2024-06-21 19:03:34 浏览: 218
在Python中,距离判别(Distance Discrimination)通常用于分类任务,特别是当数据集具有高维特征并且需要通过计算样本之间的距离来进行分类时。常用的实现方法包括欧几里得距离、曼哈顿距离(城市街区距离)、余弦相似度等。这里简单介绍一下如何用Python实现几种常见的距离度量:
1. **欧几里得距离(Euclidean Distance)**:
这是最基本的距离计算,对于n维向量,计算公式为:
```python
from math import sqrt
def euclidean_distance(vector1, vector2):
return sqrt(sum((a - b) ** 2 for a, b in zip(vector1, vector2)))
```
2. **曼哈顿距离(Manhattan Distance)**:
也称为城市街区距离,对于每个维度,只需计算绝对差值再相加:
```python
def manhattan_distance(vector1, vector2):
return sum(abs(a - b) for a, b in zip(vector1, vector2))
```
3. **余弦相似度(Cosine Similarity)**:
更偏向于方向上的相似性,是两个向量的夹角余弦值,计算公式:
```python
from sklearn.metrics.pairwise import cosine_similarity
def cosine_sim(vector1, vector2):
dot_product = np.dot(vector1, vector2)
norm_vector1 = np.linalg.norm(vector1)
norm_vector2 = np.linalg.norm(vector2)
return dot_product / (norm_vector1 * norm_vector2)
```
在这里,`np.dot`表示点积,`np.linalg.norm`计算向量的范数。
**相关问题--:**
1. 欧几里得距离和曼哈顿距离在什么情况下更适用?
2. 余弦相似度常用于哪些场景?
3. 在实际分类任务中,如何选择合适的距离度量?
阅读全文