如何在不实例化的情况下将管道模型传递给类

时间:2019-07-03 14:07:57

标签: python scikit-learn

我想创建一个采用scikit-learn管道并在其上循环的类(如下面的代码示例所示)。

但是在下面的示例中,我只能将管道的实例传递给该类,而不能创建新的管道,以从新模型开始。

from sklearn.ensemble import AdaBoostClassifier 
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
from sklearn.pipeline import Pipeline


class my_class:
    def __init__(self,model):
        self.model = model
    def evaluate(self, X, y):
        results = []
        for i in range(10):
            self.model.fit(X,y) #I always use the same instance here.
            y_pred = self.model.predict(X)
            results.append(accuracy_score(y_pred=y_pred, y_true=y))
        return results 

iris = load_iris()
X = iris.data
y = iris.target

pipeline = Pipeline([
    ('classifier', AdaBoostClassifier())
])

test = my_class(pipeline)
scores = test.evaluate(X,y)

1 个答案:

答案 0 :(得分:0)

您的代码可能正在初始化不同的模型,但结果始终是相同的,因为您每次都在相同的数据X上进行训练和测试,而超参数和random_state与{{ 1}}。这就是None列表将始终包含相同值的原因。