2016-03-24 10 views
6

Örnek ağırlıkları uygulamak istiyorum ve aynı zamanda bir özellik dönüşümü yapması gereken sklearn'den bir boru hattı kullanın. polinom ve ardından bir regresör, örn. ExtraTrees.sklearn boru hattı - Bir boru hattında bir polinom özellik dönüşümü uygulandıktan sonra örnek ağırlıkları uygulanması

#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) 

Ama:

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

Herşey sürece ben ayrı özelliklere dönüştürmek ve üretmek ve sonrasında modeli eğitmek yanı çalışır:

ben aşağıdaki iki örnekte aşağıdaki paketleri kullanıyorum Bir boru hattında bunu yapmak işe yaramıyor:

#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) 

lowing error: TypeError: fit() en fazla 3 argümanı alır (4 verilen) Bu basit örnekte kodu değiştirmek hiç sorun değil, fakat gerçek kodumdaki gerçek veriler üzerinde birkaç farklı test yapmak istediğimde, Boru hatları ve numune ağırlığı

cevap

8

Kullanılabilir Pipeline dokümantasyonundaki fit yönteminde **fit_params'dan bahsedilmektedir. Parametreyi uygulamak istediğiniz boru hattının hangi adımını belirtmeniz gerekir. Sen docs adlandırma kuralları takip ederek bunu başarabilirsiniz:

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.

nedenle tüm söyleniyor, son çizgiyi değiştirmeyi deneyin: boru hatları parametreleri kullanmak nasıl

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

This is a good example.

+1

Teşekkürler, Kevin! Bu problemi çözdü ve örnek, parametrelerin boru hatlarında nasıl çalıştığını görmek gerçekten güzel! – stefanE