我正在尝试用python库SOMPY建立一个自组织Map(SOM)。我对原始代码做了一些修改,因为我想实现一个计算最佳匹配单元(BMU)的替代方法。但是我发现这些修改没有效果,当我尝试用调试器进入库时,我最终进入了一个格式不熟悉的文件。
为了调查这个问题,我尝试单步执行SOMFactory.build()
方法,看看为什么我的更改没有执行。
import sompy
import numpy as np
test = sompy.SOMFactory.build(np.ones((20, 3)))
我预计最终会定义为SOMFactory
类
class SOMFactory(object):
@staticmethod
def build(data,
mapsize=None,
mask=None,
mapshape='planar',
lattice='rect',
normalization='var',
initialization='pca',
neighborhood='gaussian',
training='batch',
name='sompy',
component_names=None):
"""
:param data: data to be clustered, represented as a matrix of n rows,
as inputs and m cols as input features
:param neighborhood: neighborhood object calculator. Options are:
- gaussian
- bubble
- manhattan (not implemented yet)
- cut_gaussian (not implemented yet)
- epanechicov (not implemented yet)
:param normalization: normalizer object calculator. Options are:
- var
:param mapsize: tuple/list defining the dimensions of the som.
If single number is provided is considered as the number of nodes.
:param mask: mask
:param mapshape: shape of the som. Options are:
- planar
- toroid (not implemented yet)
- cylinder (not implemented yet)
:param lattice: type of lattice. Options are:
- rect
- hexa
:param initialization: method to be used for initialization of the som.
Options are:
- pca
- random
:param name: name used to identify the som
:param training: Training mode (seq, batch)
"""
print("I am in the function! ")
if normalization:
normalizer = NormalizerFactory.build(normalization)
else:
normalizer = None
neighborhood_calculator = NeighborhoodFactory.build(neighborhood)
return SOM(data, neighborhood_calculator, normalizer, mapsize, mask,
mapshape, lattice, initialization, training, name, component_names)
但我最终得到了一个名为sompy.py
的文件,上面只显示了这个:
LOAD_FAST(normalization), POP_JUMP_IF_FALSE{16}
LOAD_GLOBAL(NormalizerFactory), LOAD_METHOD(build), LOAD_FAST(normalization), CALL_METHOD{1}, STORE_FAST(normalizer), JUMP_FORWARD(to 20)
normalizer = |16|None
LOAD_GLOBAL(NeighborhoodFactory), LOAD_METHOD(build), LOAD_FAST(neighborhood), CALL_METHOD{1}, STORE_FAST(neighborhood_calculator)
return SOM(data, neighborhood_calculator, normalizer, mapsize, mask,
mapshape, lattice, initialization, training, name, component_names)
这是一个Python文件,但是格式对我来说很陌生。我想知道这段代码是什么,我需要做什么修改,这样文件中定义的SOMFactory
类的修改才会真正生效。
1条答案
按热度按时间iswrvxsc1#
我已经找到了解决问题的办法:调试器进入的文件是python字节码,它这样做是因为源文件不可用.为了确保源代码可用,我进入库的目录,卸载它,然后重新安装它,并使用一个标志告诉pip以可编辑模式安装包: