iris_data计算测试样本z和每个训练样本间的距离,其中距离分别采用欧氏距离L2、曼哈顿距离L1、闵可夫斯基距离Lp(p=0.5)
时间: 2024-01-24 21:17:16 浏览: 95
首先,我们需要导入需要的库并加载iris数据集:
```python
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
X_train = iris.data
y_train = iris.target
X_test = np.array([[5.1, 3.5, 1.4, 0.2], [6.2, 2.9, 4.3, 1.3], [7.3, 2.8, 6.3, 1.8]])
```
接下来,我们可以计算测试样本z和每个训练样本间的欧氏距离L2:
```python
L2_distances = np.sqrt(np.sum((X_train - z) ** 2, axis=1))
```
其中,z为测试样本,X_train为训练样本,np.sum((X_train - z) ** 2, axis=1)计算的是每个训练样本与测试样本的差的平方和,再开方即可得到欧氏距离L2。
接下来,我们可以计算测试样本z和每个训练样本间的曼哈顿距离L1:
```python
L1_distances = np.sum(np.abs(X_train - z), axis=1)
```
其中,np.abs(X_train - z)计算的是每个训练样本与测试样本的差的绝对值,再求和即可得到曼哈顿距离L1。
最后,我们可以计算测试样本z和每个训练样本间的闵可夫斯基距离Lp(p=0.5):
```python
Lp_distances = np.sum(np.power(np.abs(X_train - z), 0.5), axis=1)
```
其中,np.power(np.abs(X_train - z), 0.5)计算的是每个训练样本与测试样本的差的绝对值开0.5次方,再求和即可得到闵可夫斯基距离Lp(p=0.5)。
阅读全文