如何在不同特征组合的2d绘图上可视化iris数据集

2024-06-27 07:45:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在2d中可视化虹膜数据集,包括所有六种组合(萼片宽度-萼片长度),(花瓣宽度-萼片长度),(萼片长度-花瓣宽度),(花瓣长度-花瓣宽度)(花瓣长度-萼片宽度-花瓣长度),基本上这就是我目前得到的结果:

import matplotlib
matplotlib.rcParams['figure.figsize'] = (9.0, 7.0)

data = load_iris()

pairs = [(i, j) for i in range(4) for j in range(i+1, 4)]

fig, subfigs = pyplot.subplots(2, 3, tight_layout=True)
t1 = time.time()

for (f1, f2), subfig in zip(pairs, subfigs.reshape(-1)):

根据说明,我们必须根据这一对生成2d图,一次列出两个度量值,以f1和f2作为度量值,并创建类指示器和图例()以更好地显示图形。我尝试了不同的散点图,但它们似乎都不起作用


Tags: infor宽度time度量matplotlib可视化range
1条回答
网友
1楼 · 发布于 2024-06-27 07:45:56

IIUC您的目标是,最好使用函数来绘制数据,迭代可能的特征组合

from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

iris = load_iris()

def plot_iris(f1, f2):
    n_samples = len(iris.target)
    for t in set(iris.target):
        x = [iris.data[i,f1] for i in range(n_samples) if iris.target[i]==t]
        y = [iris.data[i,f2] for i in range(n_samples) if iris.target[i]==t]
        plt.scatter(x,
                    y,
                    color=['red', 'green', 'blue'][t],
                    label=iris.target_names[t])
    plt.xlabel(iris.feature_names[f1])
    plt.ylabel(iris.feature_names[f2])
    plt.title('Iris Dataset')
    plt.legend(iris.target_names, loc='lower right')
    plt.show()

n_features = len(iris.feature_names)
pairs = [(i, j) for i in range(n_features) for j in range(i+1, n_features)]

for (f1, f2) in pairs:
    plot_iris(f1, f2)

你可以得到六个这样的图:

enter image description hereenter image description here

相关问题 更多 >