将 Iris 数据集的特征值以折线图的方式进行展示。首先选取可视化结果中特征值差别最大的一个类别,然后随机选取 15 个样本,横坐标刻度为 0-14,纵坐标为特征取值。完成:(1)不同的特征用不同的颜色区分,输出得到的折线图。(2)用黑色方框圈出每个特征的最大值,并标注其取值。
时间: 2024-12-23 17:12:39 浏览: 4
要在Python中使用matplotlib库创建Iris数据集中特征值的折线图,你需要按照以下步骤操作:
1. 首先,加载Iris数据集并选择你要分析的类别。这里我们假设类别名为"versicolor",因为它通常是差别较大的一个。
```python
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
sns.set_theme(style="whitegrid")
# 加载Iris数据集
iris = load_iris()
versicolor_data = iris.data[iris.target == 2] # 选择versicolor类别
# 随机选取15个样本
np.random.seed(42) # 设置随机种子保证每次结果一致
indices = np.random.choice(versicolor_data.shape[0], 15, replace=False)
versicolor_samples = versicolor_data[indices]
```
2. 创建一个新图,设置横纵坐标的范围,并为每个特征分配不同的颜色。
```python
fig, ax = plt.subplots(figsize=(10, 6))
features = iris.feature_names
colors = plt.cm.rainbow(np.linspace(0, 1, len(features)))
# 绘制折线图
for i, feature in enumerate(features):
ax.plot(range(15), versicolor_samples[:, i], color=colors[i], marker='o', linestyle='-', linewidth=1)
# 设置坐标轴范围和标签
ax.set_xlim(0, 14)
ax.set_xticks(np.arange(15))
ax.set_xlabel('Sample Index (0-14)')
ax.set_ylabel('Feature Value')
# 显示每个特征的最大值
max_values = versicolor_data.max(axis=0).reshape(-1, 1)
max_positions = np.array([i for i in range(15)])
for feature, position, value in zip(features, max_positions, max_values):
ax.text(position - 0.5, value, f'max {value:.2f} ({feature})', color='black', ha='center', va='bottom')
# 添加网格线
ax.grid(True)
plt.show()
```
这将生成一个折线图,不同特征用不同的颜色区分,并用黑色方框标注每个特征的最大值及其对应的取值。
阅读全文