4

データのクリーニング、トレーニングデータの準備など、一連のステップを含む機械学習アルゴリズムがあります。各ステップは、python クラスの個別のメソッドに保存されます。クラスのインスタンス化時にステップが自動的に実行されるように、クラスを構築するためのベストプラクティスの方法は何だろうと思っています。

これが私がやったことです(コードは説明用ですが、このアプローチは実際のアルゴリズムで機能します)。少しゴツい感じです。もっとエレガントな方法はありますか?

 class Kaggle():
    """
    An algorithm
    """

    def __init__( self ):
        self.bar = 1

    def step_one( self, some_text_data ):
        self.bar = 1 ** 2
        # Do some data cleaning
        # return processed data

    def step_two( self ):
        foo = step_one(baz)
        # do some more processing

    def step_three( self ):
        bar = step_two()
        # output results

    def run( self ):
        self.step_one()
        self.step_two()
        self.step_three()

if __name__ == "__main__":
    kaggle = Kaggle()
    kaggle.run()
4

2 に答える 2

8

オブジェクトを「クラスのインスタンス化時に自動的に実行する」ことが目標の場合はself.run()initに入れるだけです。

def __init__(self):
    self.bar = 1
    self.run()
于 2015-05-30T03:42:35.437 に答える
3

すべての呼び出しを__init__メソッドに入れます。これはあなたが達成したかったことではありませんか?必要に応じてテストを実行しないようにするデフォルト値のフラグを追加できます。

def __init__( self, runtests=True ):
    self.bar = 1
    if runtests:
        self.step_one()
        self.step_two()
        self.step_three()
于 2015-05-30T03:41:31.753 に答える