【问题标题】:How to combine generating multiple variables in one class如何在一个类中组合生成多个变量
【发布时间】:2017-01-24 12:50:18
【问题描述】:

我有一个如下的数据集

import pandas as pd
import sklearn
df= pd.DataFrame({'color': ['red', 'red,blue','red,blue,yellow', 'red,yellow', 'blue,yellow']})

我得到一个像这样的新变量

df['red'] = 0
df.ix[df['color'].str.contains("red") == True, 'red'  ] =1

同样我可以得到df['blue'] & df['yellow'] 然后我不得不在class 中使用它(我想申请pipeline

class Red():

def transform(self, X, y=None, **fit_params):
    X['red'] = 0
    X.loc[X['color'].str.contains("red") == True, 'red'  ] = 1
    return X['red'].values.reshape(len(X),1)

def fit_transform(self, X, y=None, **fit_params):
    self.fit(X, y, **fit_params)
    return self.transform(X)

def fit(self, X, y=None, **fit_params):
    return self

它有效,但我想得到class,它也会生成'blue' & 'yellow'。为每种“颜色”上课?在真实的数据集中有几十种“颜色”。 我是新手,请告诉我如何在一个class 中组合生成多个变量

【问题讨论】:

    标签: python function python-3.x class


    【解决方案1】:

    我很惊讶,但它确实有效

    class Red(BaseEstimator, TransformerMixin):
    
    def transform(self, X, y=None, **fit_params):
        X['red'] = 0
        X.loc[X['color'].str.contains("red") == True, 'red'  ] = 1
        X['blue'] = 0
        X.loc[X['color'].str.contains("blue") == True, 'blue'  ] = 1
        return X[['red', 'blue']].values.reshape(len(X),2)
    
    def fit_transform(self, X, y=None, **fit_params):
        self.fit(X, y, **fit_params)
        return self.transform(X)
    
    def fit(self, X, y=None, **fit_params):
        return self
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2018-03-03
      • 2022-08-13
      • 1970-01-01
      相关资源
      最近更新 更多