我正在尝试在我的项目中为不同类型的矩阵设计类。基本上有两类矩阵,稀疏矩阵和对称矩阵。这两种矩阵具有共同的属性和方法。
稀疏矩阵用于存储许多文档中单词的共现矩阵。从行和列的单词到它们的真实矩阵对象的索引都有映射。由于矩阵非常大,我们使用scipy稀疏矩阵来存储实矩阵。矩阵看起来像:
Alice Bob Carol Eve Frank
Alice 3 8 0 6 0
Carol 0 3 7 0 3
David 4 2 0 6 0
Eve 6 0 0 8 2
Frank 0 7 3 2 6
行字列表和列字列表可能不同。在稀疏矩阵类中,有一个用于索引映射的行字列表,一个用于索引映射的列字列表和一个scipy稀疏矩阵。
对称矩阵用于存储单词的相似度矩阵。与稀疏矩阵类似,对称也具有索引映射的单词列表,但是由于矩阵是对称的,因此仅需要一个映射。真实矩阵存储在numpy数组中。矩阵看起来像:
Alice Bob Carol David Eve Frank
Alice 1.00 0.33 0.33 0.67 0.75 0.33
Bob 0.33 1.00 0.67 0.75 0.33 0.40
Carol 0.33 0.67 1.00 0.40 0.80 0.50
David 0.67 0.75 0.40 1.00 0.50 0.67
Eve 0.75 0.33 0.80 0.50 1.00 0.40
Frank 0.33 0.40 0.50 0.67 0.40 1.00
我想为这两种矩阵实现一个基矩阵。因为这些矩阵有必要的元数据,例如语料库名称和文件编码,以及常见的方法,例如 print , get_value < / em>(虽然它们的实现会有所不同)。
我想知道为稀疏矩阵和对称矩阵设计基矩阵和两个子类是否是一个好主意。如果没有,为所有这些矩阵设计类的好方法是什么?
我正在尝试为这些矩阵实现一个方法子矩阵。对于稀疏矩阵,方法子矩阵需要两个单词列表,一个用于行,一个用于列。而对于对称矩阵,该方法只需要一个单词列表。如果我在基类类中实现一个子矩阵方法。 对称矩阵的方法与其超类的签名不匹配,这是不好的。并且会有很多方法像这样发生。对于这类问题,什么是好的解决方案?