保存一个Python对象

时间:2018-09-01 11:03:07

标签: python-3.x object save pickle

我想保存以下类型的对象(“群集”)以便以后使用。 对象的类型

<class 'pyemma.coordinates.clustering.kmeans.KmeansClustering'>

我尝试使用泡菜,但加载的对象导致错误。

n_clusters = 3
clustering = coor.cluster_kmeans(Y, k=n_clusters, max_iter=100, tolerance=1e-10, fixed_seed=True)    
with open("clustering.file", "wb") as f:
    pickle.dump(clustering, f, pickle.HIGHEST_PROTOCOL)
with open("clustering.file", "rb") as f:
    clustering=pickle.load(f)
clustering.save_traj()
dtrajs = clustering.dtrajs  # get discrete trajectories

这是错误:

  File "pyemma_dG.py", line 102, in <module>
    dtrajs = clustering.dtrajs  # get discrete trajectories
  File "/home/local/andtos-loc/anaconda3/lib/python3.5/site-packages/pyemma/coordinates/clustering/interface.py", line 101, in dtrajs
    self._dtrajs = self.assign(stride=1)
  File "/home/local/andtos-loc/anaconda3/lib/python3.5/site-packages/pyemma/coordinates/clustering/interface.py", line 217, in assign
    mapped = self.get_output(stride=stride, chunk=self.chunksize, skip=skip)
  File "/home/local/andtos-loc/anaconda3/lib/python3.5/site-packages/pyemma/coordinates/data/_base/transformer.py", line 182, in chunksize
    return self.default_chunksize
  File "/home/local/andtos-loc/anaconda3/lib/python3.5/site-packages/pyemma/coordinates/data/_base/iterable.py", line 74, in default_chunksize
    if self._default_chunksize is None:
AttributeError: 'KmeansClustering' object has no attribute '_default_chunksize'

1 个答案:

答案 0 :(得分:1)

不幸的是,这个旧版本的PyEMMA不支持在坐标子包中对复杂对象进行酸洗。高于2.5的版本正确支持它。我建议使用内置的保存和加载功能,因为它还可以通过HDF5提供非常快速和io高效的阵列序列化。