2017-01-24 1 views
0

kombinieren zu erzeugen habe ich einen Datensatz wie untenWie man mehrere Variablen in einer Klasse

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

ich eine neue Variable wie diese

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

ähnlich bekommen kann ich df['blue'] & df['yellow'] Dann musste ich benutze es in class (ich möchte pipeline anwenden)

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 

Es funktioniert, aber ich möchte class bekommen, die auch 'blue' & 'yellow' erzeugt. Machen Sie Klassen für jede "Farbe"? Im realen Datensatz gibt es ein paar Dutzend Farben. ich in der Klasse bin neu, bitte eine Idee geben, wie in einer class Erzeugen mehrerer Variablen kombinieren

Antwort

0

Ich war überrascht, aber es funktioniert

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 
Verwandte Themen