创建分类数据集存储的字典,类似于数字数据集(sklearn)

时间:2016-11-10 10:34:50

标签: python numpy dictionary machine-learning

我从一些图像中提取一些特征,我想将它们与它们的标签(最好是原始图像)一起保存,以便以后加载它们而不必每次都运行特征提取代码。

我希望将它们存储在与digits dataset中的sklearn.datasets类似的结构中,以便dictionary类型。

所以我的问题不是存储key:value类型的东西,而是存储类型的东西:

  • 功能(X)
  • target_labels(y)
  • 图片(可选)
  • target_names

我的Xnumpy.ndarray数据类型,y1-D vector array

有任何建议如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

如果您想要sklearn.datasets方法返回,为什么不使用他们的code

他们定义了一个符合你想要的类bunch

class Bunch(dict):
    """Container object for datasets
    Dictionary-like object that exposes its keys as attributes.
    >>> b = Bunch(a=1, b=2)
    >>> b['b']
    2
    >>> b.b
    2
    >>> b.a = 3
    >>> b['a']
    3
    >>> b.c = 6
    >>> b['c']
    6
    """

    def __init__(self, **kwargs):
        super(Bunch, self).__init__(kwargs)

    def __setattr__(self, key, value):
        self[key] = value

    def __dir__(self):
        return self.keys()

    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(key)

然后他们用:

创建一个数据集对象
Bunch(data=data, target=target,
                 target_names=target_names,
                 DESCR=fdescr,
                 feature_names=['feat_1', 'feat_2',
                                'feat_3', 'feat_4'])