在自组织地图绘图或鸢尾花数据集中可视化 class 个标签

Visualizing class labels in self-organizing map plot or iris dataset

我正在尝试为鸢尾花数据集 (https://archive.ics.uci.edu/ml/datasets/Iris) 生成 SOM 映射的可视化。

到目前为止我的代码:

from sklearn.datasets import load_iris
from mvpa2.suite import *
import pandas as pd
import numpy as np

df = pd.read_csv(filepath_or_buffer='data/iris.data', header=None, sep=',')
df.columns=['sepal_len', 'sepal_wid', 'petal_len', 'petal_wid', 'class']
df.dropna(how="all", inplace=True) # drops the empty line at file-end

# split the data table into feature data x and class labels y
x = df.ix[:,0:4].values # the first 4 columns are the features
y = df.ix[:,4].values   # the last column is the class label
t = np.zeros(len(y), dtype=int)
t[y == 'Iris-setosa'] = 0
t[y == 'Iris-versicolor'] = 1
t[y == 'Iris-virginica'] = 2

som = SimpleSOMMapper((240, 320), 100, learning_rate=0.05)
som.train(x)

pl.imshow(som.K, origin='lower')
mapped = som(x)

for i, m in enumerate(mapped):
    pl.text(m[1], m[0], t[i], ha='center', va='center',
           bbox=dict(facecolor='white', alpha=0.5, lw=0))
pl.show()

生成此映射:

有什么方法可以自定义调色板,让它看起来像这个一样漂亮吗? (摘自 https://github.com/JustGlowing/minisom)?

基本上我正在尝试使用更好的调色板(可能颜色更少)并以更好的方式标记 class 标签。

谢谢。

我来回答我自己的问题:原来我忘了切片我的数据:

pl.imshow(som.K[:,:,0], origin='lower')

现在一切正常: