将鸢尾花数据集按种类求花萼和花瓣长度、宽度的平均数然后画出它的雷达图
时间: 2024-05-25 08:18:36 浏览: 105
首先,我们需要导入需要的库和数据集:
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
```
接下来,我们可以将数据集转换为 Pandas DataFrame 并按种类分组:
```python
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target_names[iris.target]
grouped = df.groupby('target').mean()
```
然后,我们可以提取特征名和平均值并绘制雷达图:
```python
features = iris.feature_names
means = grouped.values.tolist()
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, polar=True)
angles = [n / float(len(features)) * 2 * 3.14 for n in range(len(features))]
angles += angles[:1]
ax.set_theta_offset(3.14 / 2)
ax.set_theta_direction(-1)
plt.xticks(angles[:-1], features)
ax.set_rlabel_position(0)
plt.yticks([2, 4, 6, 8], ["2", "4", "6", "8"], color="grey", size=7)
plt.ylim(0, 8)
for i in range(len(means)):
values = means[i]
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label=grouped.index[i])
ax.fill(angles, values, alpha=0.1)
plt.legend(bbox_to_anchor=(0.1, 0.1))
plt.show()
```
这将生成一个雷达图,显示不同种类鸢尾花的花萼和花瓣长度、宽度的平均值:
![iris-radar-chart](https://user-images.githubusercontent.com/5735168/119287568-2e7b8e00-bc69-11eb-83bf-cf7aa8acee88.png)
阅读全文