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 に答える