在UCI数据集中随机选择一个数据集,然后绘制柱状图,编写曼哈顿距离和余弦相似度,给出此实验代码
时间: 2024-10-14 19:08:40 浏览: 51
UCI数据集及相应代码.rar
5星 · 资源好评率100%
在Python中,我们可以使用pandas库加载UCI数据集(例如iris、波士顿房价等),matplotlib库用于绘制柱状图,sklearn库里的manhatten_distances和cosine_similarity函数计算曼哈顿距离和余弦相似度。下面是一个简单的示例,我们将以UCI的鸢尾花(Iris)数据集为例:
首先安装所需的库(如果尚未安装):
```bash
pip install pandas scikit-learn matplotlib seaborn
```
然后,我们导入必要的模块并加载数据:
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import manhattan_distance, cosine_similarity
# 加载鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
```
接下来,我们准备绘制柱状图。这里以花瓣长度和宽度为例,展示各品种的分布:
```python
# 划分数据和标签
features = ['petal length (cm)', 'petal width (cm)']
X = data[features]
y = iris.target
# 绘制柱状图
plt.figure(figsize=(8,6))
for i, species in enumerate(np.unique(y)):
sub_df = X[y == species]
plt.bar(sub_df.index, sub_df.values[:,0], label=f'Species {species}', alpha=0.7)
plt.bar(sub_df.index, sub_df.values[:,1], bottom=sub_df.values[:,0], color='tab:orange')
plt.xlabel('Sample Index')
plt.ylabel('Petal Size (cm)')
plt.legend()
plt.show()
```
计算样本间的曼哈顿距离和余弦相似度:
```python
# 对于所有样本对
sample_pairs = list(zip(X.index, X.index))
distances = []
similarities = []
# 计算曼哈顿距离和余弦相似度
for pair in sample_pairs:
dist = manhattan_distance(X.loc[pair[0]], X.loc[pair[1]])
sim = cosine_similarity(X.loc[pair[0]].reshape(1, -1), X.loc[pair[1]].reshape(1, -1))[0][0]
distances.append(dist)
similarities.append(sim)
print(f"Manhattan Distances: {distances}")
print(f"Cosine Similarities: {similarities}")
```
这将显示每个样本对之间的曼哈顿距离和余弦相似度。注意实际运行时,你需要根据UCI数据集的实际结构调整上述代码。
阅读全文