#pragma once
#ifndef PIPELINE_H
#define PIPELINE_H


#include "abc.h"

class Pipeline : public ClassifierABC {
private:
    vector<TransformerABC*> _transformers;
    ClassifierABC* _classifier;

protected:
    void _fit(const Matrix<data_t>& data, const vector<label_t>& targets);
    vector<label_t> _predict(const Matrix<data_t>& data) const;
    label_t _predict(const vector<data_t>& sample) const;
public:
    Pipeline(vector<TransformerABC*> transformers, ClassifierABC* classifier);
};


#endif
