Reputation: 1
I'm trying to build simple pipeline:
import pandas as pd
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
import torch
from torch.utils.data import DataLoader, TensorDataset
class CGANDataAugmenter(BaseEstimator, TransformerMixin):
def __init__(self, device, opt):
self.generator = Generator(opt).to(device)
self.discriminator = Discriminator(opt).to(device)
self.device = device
self.opt = opt
self.n_samples=opt.n_samples
self.sampler=None
def fit_transform(self, X, y):
feature_name = X.columns
label_name = y.name
self.sampler = train_CGAN(X,y,self.generator,self.discriminator,self.device,self.opt)
generated_data = sample(self.sampler,self.n_samples, feature_name, label_name,self.opt)
original_data=pd.concat([X,y],axis=1)
combine_data=pd.concat([original_data,generated_data],axis=0)
X_combined = combined_data.drop(columns=[label_name])
Y_combined = combined_data[label_name]
return X_combined, Y_combined
from imblearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
steps = [
('sampler', CGANDataAugmenter(device,opt)),
('model',DecisionTreeClassifier())
]
And I'm getting error:
TypeError: Last step of Pipeline should implement fit or be the string 'passthrough'. 'CGANDataAugmenter(device=device(type='cpu'), opt=Namespace(lr=0.0002, b1=0.5, b2=0.999, num_classes=2, latent_dim=8, n_epochs=100, batch_size=64, n_samples=100, origin_size=1))' (type ) doesn't
What is wrong? How can I fix it?
Upvotes: 0
Views: 18