Ich möchte Beispielgewichte anwenden und gleichzeitig eine Pipeline von sklearn verwenden, die eine Feature-Transformation, z. Polynom, und wenden dann einen Regressor, z.B. ExtraTrees.sklearn pipeline - Anwenden von Beispielgewichten nach dem Anwenden einer Polynom-Feature-Transformation in einer Pipeline
Ich verwende die folgenden Pakete in den beiden folgenden Beispiele:
from sklearn.ensemble import ExtraTreesRegressor
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
Alles funktioniert gut, solange ich seperat die Eigenschaften verändern und erzeugen und das Modell trainieren danach:
#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)
Aber tut es in einer Pipeline, funktioniert nicht:
#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)
Ich bekomme die fol Lowing-Fehler: TypeError: fit() braucht höchstens 3 Argumente (4 gegeben) In diesem einfachen Beispiel ist es kein Problem, den Code zu ändern, aber wenn ich mehrere verschiedene Tests auf meine realen Daten in meinem echten Code ausführen möchte, in der Lage sein, Pipelines und Probengewicht zu verwenden
Danke, Kevin! Das hat das Problem gelöst und das Beispiel ist wirklich schön zu sehen, wie Parameter in Pipelines funktionieren! – stefanE