如何在二维图上可视化不同特征组合的虹膜数据集

问题描述 投票:0回答:2

我想用所有六种组合(萼片宽度-萼片长度)、(花瓣宽度-萼片长度)、(萼片长度-花瓣宽度)、(花瓣长度-花瓣宽度)(花瓣长度-萼片)以二维方式可视化虹膜数据集宽度)(萼片宽度-花瓣长度)基本上,这就是我到目前为止得到的:

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)):

根据说明,我们必须基于这对生成二维图,一次列出两个度量,以 f1 和 f2 作为度量,并创建类指示器和 legend() 以更好地可视化图形,我尝试了不同的散点图,但没有它们似乎有效。

python machine-learning scikit-learn
2个回答
1
投票

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 here enter image description here


0
投票

从sklearn导入数据集 将 pandas 导入为 pd

whole_data = datasets.load_iris() 整体数据

print('数据集的完整描述: ',whole_data['DESCR'])

x_axis = Whole_data.data[:,2] # 花瓣长度 y_axis = Whole_data.data[:, 3] # 花瓣宽度

绘图

将 matplotlib.pyplot 导入为 plt

plt.scatter(x_axis, y_axis, c=whole_data.target) #c- rozróżnienie wg koloru, tu: różne kolory zgodnie z klasami plt.title("紫色:Setosa,绿色:Versicolor,黄色:Virginica") plt.show()

我选择了花瓣宽度和花瓣长度进行可视化,因为它们显示出高级相关性......为什么只有我?

© www.soinside.com 2019 - 2024. All rights reserved.