相关疑难解决方法(0)

用于改变X和y的sklearn管道的自定义变换器

我想创建自己的变换器以与sklearn Pipeline一起使用.因此,我正在创建一个实现fit和transform方法的类.变压器的目的将是从具有比的NaN指定数目的多个矩阵中删除行.所以我面临的问题是如何更改传递给变压器的X和y矩阵?我相信这必须在fit方法中完成,因为它可以同时访问X和y.因为一旦我将X重新分配给具有较少行的新矩阵,python就会通过赋值传递参数,因此对原始X的引用将丢失(当然对于y也是如此).是否可以保留此参考?

我正在使用pandas DataFrame来轻松删除具有太多NaN的行,这可能不适合我的用例.当前代码如下所示:

class Dropna():

    # thresh is max number of NaNs allowed in a row
    def __init__(self, thresh=0):
        self.thresh = thresh

    def fit(self, X, y):
        total = X.shape[1]
        # +1 to account for 'y' being added to the dframe                                                                                                                            
        new_thresh = total + 1 - self.thresh
        df = pd.DataFrame(X)
        df['y'] = y
        df.dropna(thresh=new_thresh, inplace=True)
        X = df.drop('y', axis=1).values
        y = df['y'].values
        return self

    def transform(self, X):
        return X
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning data-analysis scikit-learn

10
推荐指数
3
解决办法
5924
查看次数