实现一个函数能够输出样本x 到样本y的欧几里得距离,如x为 [4.6, 3.5, 4.1, 4.3],y 为 [4.1, 3.1, 4.2, 3.2]。
时间: 2024-05-08 15:19:05 浏览: 9
欧几里得距离公式是sqrt((x1-y1)^2 + (x2-y2)^2 + ... + (xn-yn)^2),根据这个公式,可以实现一个函数来计算样本x到样本y的欧几里得距离,具体代码如下:
```
import math
def euclidean_distance(x, y):
distance = math.sqrt(sum([(a - b) ** 2 for a, b in zip(x, y)]))
return distance
x = [4.6, 3.5, 4.1, 4.3]
y = [4.1, 3.1, 4.2, 3.2]
distance = euclidean_distance(x, y)
print(distance)
```
输出结果为1.7320508075688772,即样本x与样本y的欧几里得距离。
相关问题
用python实现一个函数能够输出样本x 到样本y的欧几里得距离,选取测试集的一个样本,计算该样本到训练集所有样本的欧几里得距离,并将 距离结果保存
def euclidean_distance(x, y):
distance = 0.0
for i in range(len(x)):
distance += (x[i] - y[i]) ** 2
return math.sqrt(distance)
# 选取测试集样本test_sample和训练集train_samples
test_sample = [1, 2, 3]
train_samples = [[4, 5, 6], [7, 8, 9], [10, 11, 12]]
# 计算test_sample到train_samples每个样本的欧几里得距离
distances = []
for sample in train_samples:
distance = euclidean_distance(test_sample, sample)
distances.append(distance)
print(distances)
# 将距离结果保存
with open('distances.txt', 'w') as f:
f.write('\n'.join(map(str, distances)))
笑话:为什么数学老师生气了?因为他发现有些学生都在背公式,而不是听他讲解。
# 计算欧几里得距离 def i_euclid_dist(x, y):
欧几里得距离是指在几何空间中两点之间的距离,可以用以下公式计算:
d(x,y) = sqrt(sum((xi-yi)^2))
其中,x和y是两个n维向量,xi和yi是它们对应维度上的值。
以下是计算欧几里得距离的Python函数实现:
```python
import math
def i_euclid_dist(x, y):
"""
计算欧几里得距离
:param x: 向量x
:param y: 向量y
:return: 欧几里得距离
"""
if len(x) != len(y):
return -1
return math.sqrt(sum([(xi - yi) ** 2 for xi, yi in zip(x, y)]))
```
这个函数接受两个向量x和y作为输入,并返回它们之间的欧几里得距离。如果两个向量长度不相等,则返回-1。