2016-03-24 9 views
6

Chcę zastosować wag próbki i jednocześnie użyć potoku ze sklearn, który powinien przekształcić funkcję, np. wielomian, a następnie zastosować regresor, np. ExtraTrees.rurociąg sklearn - Stosowanie masy próbek po zastosowaniu transformacji cech wielomianu w potoku

Używam następujące pakiety w dwóch poniższych przykładach:

from sklearn.ensemble import ExtraTreesRegressor 
import numpy as np 
from sklearn.pipeline import Pipeline 
from sklearn.preprocessing import PolynomialFeatures 

Wszystko działa dobrze tak długo jak ja oddzielnie przekształcić cechy i generować i trenować model potem:

#Feature generation 
X = np.random.rand(200,4) 
Y = np.random.rand(200) 

#Feature transformation 
poly = PolynomialFeatures(degree=2) 
poly.fit_transform(X) 

#Model generation and fit 
clf = ExtraTreesRegressor(n_estimators=5, max_depth = 3) 
weights = [1]*100 + [2]*100 
clf.fit(X,Y, weights) 

Ale robienie tego w potoku, nie działa:

#Pipeline generation 
pipe = Pipeline([('poly2', PolynomialFeatures(degree=2)), ('ExtraTrees', ExtraTreesRegressor(n_estimators=5, max_depth = 3))]) 

#Feature generation 
X = np.random.rand(200,4) 
Y = np.random.rand(200) 

#Fitting model 
clf = pipe 
weights = [1]*100 + [2]*100 
clf.fit(X,Y, weights) 

Dostaję fol lowing error: TypeError: fit() przyjmuje co najwyżej 3 argumenty (4 podane) W tym prostym przykładzie nie ma problemu z modyfikacją kodu, ale kiedy chcę uruchomić kilka różnych testów na moich prawdziwych danych w moim prawdziwym kodzie, możliwość korzystania z rurociągów i masy próbki

Odpowiedz

8

Istnieje wzmianka o **fit_params w dokumentacji metody Pipeline. Musisz określić, do którego etapu potoku chcesz zastosować parametr. Można to osiągnąć stosując zasady nazewnictwa w docs:

For this, it enables setting parameters of the various steps using their names and the parameter name separated by a ‘__’, as in the example below.

Więc wszystko, co zostało powiedziane, spróbuj zmienić ostatni wiersz:

clf.fit(X,Y, **{'ExtraTrees__sample_weight': weights}) 

This is a good example, w jaki sposób pracować z parametrami w rurociągach.

+1

Dzięki, Kevin! Rozwiązało to problem, a przykład jest naprawdę fajny, aby zobaczyć, jak działają parametry w potokach! – stefanE

Powiązane problemy