我正在从一些图像中提取特征,并希望将这些特征连同它们的标签(以及原始图像,如果可能的话)保存起来,以便以后无需每次都运行特征提取代码即可加载它们。
我想将它们存储在一个与sklearn.datasets
中的digits数据集
类似的结构中,因此应该是字典
类型。
所以我的问题不是存储键:值
类型的数据,而是存储以下类型的数据:
- 特征 (X)
- 目标标签 (y)
- 图像(可选)
- 目标名称
我的X
是numpy.ndarray
数据类型,而y
是一维向量数组
。
有什么建议可以实现这个目标吗?
回答:
如果你希望它像sklearn.datasets
方法返回的那样,为什么不使用他们的代码呢?
他们定义了一个bunch
类,正好符合你的需求:
class Bunch(dict): """数据集的容器对象
字典样对象,可以将其键作为属性暴露。
>>> 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'])