在循环中创建类

时间:2015-05-10 23:23:42

标签: python class scikit-learn

我想定义一个类,然后创建该类的动态数量的副本。

现在,我有这个:

class xyz(object):

    def __init__(self):
        self.model_type = ensemble.RandomForestClassifier()
        self.model_types = {}
        self.model = {}
        for x in range(0,5):
            self.model_types[x] = self.model_type

    def fit_model():
        for x in range(0,5):
            self.model[x] = self.model_types[x].fit(data[x])

    def score_model():
        for x in range(0,5):
            self.pred[x] = self.model[x].predict(data[x])

我想要适应5个不同的模型,但我认为Python指向同一个类5次,而不是在模型字典中创建5个不同的类。

这意味着当我使用" score_model"方法,它只是评分适合的LAST模型,而不是5个独特的模型。

我认为我只需要使用继承来填充带有5个不同类的model []字典,但我不知道该怎么做?

1 个答案:

答案 0 :(得分:2)

在您的原始代码中,您创建了一个实例并使用了五次。相反,只有在将类添加到model_types数组时才需要初始化类,如此代码中所示。

class xyz(object):

    def __init__(self):
        self.model_type = ensemble.RandomForestClassifier
        self.model_types = {}
        self.model = {}
        for x in range(0,5):
            self.model_types[x] = self.model_type()

    def fit_model():
        for x in range(0,5):
            self.model[x] = self.model_types[x].fit(data[x])

    def score_model():
        for x in range(0,5):
            self.pred[x] = self.model[x].predict(data[x]) 

在python中,一切都是一个对象,所以你的变量也可以指向一个类,然后你的变量可以被视为一个类。