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
Dzięki, Kevin! Rozwiązało to problem, a przykład jest naprawdę fajny, aby zobaczyć, jak działają parametry w potokach! – stefanE