迭代图中的标记

我试图用颜色和正确的标签来表示预测,作为虹膜数据集的标记。这是我到目前为止所拥有的:


from sklearn.mixture import GMM

import pandas as pd

from sklearn import datasets

import matplotlib.pyplot as plt

import itertools


iris = datasets.load_iris()

x = iris.data

y = iris.target

gmm = GMM(n_components=3).fit(x)

labels = gmm.predict(x)

fig, axes = plt.subplots(4, 4)

Superman = iris.feature_names

markers = ["o" , "s" , "D"]

Mi=[]

for i in range(150):

  Mi.append(markers[y[i]])


for i in range(4):

    for j in range(4):

        if(i != j):

            axes[i, j].scatter(x[:, i], x[:, j], c=labels, marker = Mi, s=40, cmap='viridis')

        else:

            axes[i,j].text(0.15, 0.3, Superman[i], fontsize = 8)

我不确定为什么颜色会迭代而标记不会,但是有没有办法为每个标记分配一个特定的值,比如颜色?当我只输入 y 的数值时,它也会失败。


它返回的代码是:


无法识别的标记样式 ['o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o ', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', “o”、“o”、“o”、“o”、“o”、“o”、“o”、“o”、“o”、“o”、“o”、“o”、“o” ', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's ', 's', 's','s', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's ', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 'D', 'D ', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', “D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D” ', 'D', 'D', 'D',“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D”、“D” ', 'D', 'D', 'D', 'D', 'D', 'D', 'D']


不负相思意
浏览 201回答 2
2回答

湖上湖

您可以像下面这样修改代码以获得所需的结果:markers = ["o" , "s" , "D"]colors = ["red", "green", "blue"]for i in range(4):    for j in range(4):        for k in range(x.shape[0]):            if(i != j):                axes[i, j].scatter(x[k, i], x[k, j], color=colors[labels[k]], marker = markers[y[k]], s=40, cmap='viridis')              else:                axes[i,j].text(0.15, 0.3, Superman[i], fontsize = 8)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python