은 가짜 데이터를 감안할 때 :두 개의 입력으로 fit_transformer를 작성하고 파이썬 sklearn의 파이프 라인에 포함시키는 방법은 무엇입니까?
X = pd.DataFrame(np.random.randint(1,10,28).reshape(14,2))
y = pd.Series(np.repeat([0,1], [10,4])) # imbalanced with more 0s than 1s
나는 아래-샘플 Y의 대부분이 소수의 라벨의 길이와 일치하는 sklearn 맞는 변압기 물품. 파이프 라인에서 사용하고 싶습니다.
from sklearn.base import BaseEstimator, TransformerMixin
class UnderSampling(BaseEstimator, TransformerMixin):
def fit(self, X, y): # I don't need fit to do anything
return self
def transform(self, X, y):
is_pos = y == 1
idx_pos = y[is_pos].index
random.seed(random_state)
idx_neg = random.sample(y[~is_pos].index, is_pos.sum())
idx = sorted(list(idx_pos) + list(idx_neg))
X_resampled = X.loc[idx]
y_resampled = y.loc[idx]
return X_resampled, y_resampled
def fit_transform(self, X, y):
return self.transform(X,y)
불행히도, 나는 파이프 라인에서 사용할 수 없습니다.
from sklearn.pipeline import make_pipeline
us = UnderSampling()
rfc = RandomForestClassifier()
model = make_pipeline(us, rfc)
model.fit(X,y)
어떻게하면이 파이프 라인을 작동시킬 수 있습니까?