我剛剛發現了scikit-learn的Pipeline功能,我發現在訓練模型之前測試不同的預處理步驟組合非常有用。scikit-learn:將管道功能作爲流水線的一部分使用
流水線是實現fit
和transform
方法的一系列對象。現在,如果我想添加一個新的預處理步驟,我曾經寫過一個繼承自sklearn.base.estimator
的類。不過,我在想,必須有一個更簡單的方法。我是否真的需要將每個我想要應用於估計類的函數都包裝起來?
實施例:
class Categorizer(sklearn.base.BaseEstimator):
"""
Converts given columns into pandas dtype 'category'.
"""
def __init__(self, columns):
self.columns = columns
def fit(self, X, y):
return self
def transform(self, X):
for column in self.columns:
X[column] = X[column].astype("category")
return X
不幸的是,FunctionTransformer似乎強制輸出是一個只有數字內容的numpy ndarray,它不適用於管道的每個階段。 – clstaudt