0

我想继承从 mlpy 机器学习包导出的 LibSvm 对象类:

from mlpy import MaximumLikelihoodC, LibSvm 

class Svm(LibSvm):   

def __init__(self,Gs,ls):
    self._K = ls.shape[1]
    self._Gs = Gs
    self._N = Gs.shape[1]
    self._ls = ls
    LibSvm.__init__('c_svc','rbf',\
            gamma=1.0/self._N,C=100,probability=True)

当我调用构造函数时,例如,

svm = Svm(Gs,ls)

解释器忽略我的init并执行 LibSvm 的init方法,给出错误

svm = SVM(Gs,ls)  
File "libsvm.pyx", line 146, in mlpy.libsvm.LibSvm.__cinit__ mlpy/libsvm/libsvm.c:1803)
ValueError: invalid svm_type

使用相同的语法对 MaximumLikelihoodC 进行子类化没有问题。

4

1 回答 1

1

在 C 中实现的 Python 类不能被子类化,除非它们是专门为它设计的,请参阅哪些类不能被子类化?.

从错误消息的外观来看,它似乎很确定它是用 C 实现的,我希望作者没有投入额外的工作来使其可子类化。

于 2013-01-26T12:24:43.153 回答