Ich experimentiere die Anpassung von 1-3 Grad Polynom Transformation zu den ursprünglichen Daten mit jeweils 100 vorhergesagte Werte. Zuerst habe ich 1) die ursprünglichen Daten umgeformt, 2) fit_transform auf die Testmenge und den Prädiktionsraum (von Datenmerkmalen) angewendet, 3) eine lineare Vorhersage über den Vorhersagebereich erhalten und 4) sie unter Verwendung des folgenden Codes in ein Array exportiert:Python Sklearn Polynom Vorverarbeitung und dimensionale Probleme
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
np.random.seed(0)
n = 100
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+n/6 + np.random.randn(n)/10
x = x.reshape(-1, 1)
y = y.reshape(-1, 1)
pred_data = np.linspace(0,10,100).reshape(-1,1)
results = []
for i in [1, 2, 3] :
poly = PolynomialFeatures(degree = i)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)
x_poly1 = poly.fit_transform(x_train)
pred_data = poly.fit_transform(pred_data)
linreg1 = LinearRegression().fit(x_poly1, y_train)
pred = linreg1.predict(pred_data)
results.append(pred)
results
Allerdings habe ich nicht bekommen, was ich wollte, Python nicht eine Reihe von (3, 100) Form zurück, wie ich es erwartet hatte und in der Tat, erhielt ich eine Fehlermeldung
ValueError: shapes (100,10) and (4,1) not aligned: 10 (dim 1) != 4 (dim 0)
Es scheint sich um ein Dimensionsproblem zu handeln, das entweder durch "Umformen" oder durch den Schritt "fit_transform" entsteht. Ich war verwirrt, da dies ein einfacher Test sein sollte. Würde mich jemand darüber aufklären? Es wird sehr geschätzt werden.
Vielen Dank.
Mit freundlichen Grüßen,
Sie sollten immer nur 'transform()' auf Testdaten, die 'pred_data' in Ihrem Fall aufrufen. 'fit_transform()' call vergisst die vorherigen Aufrufe und lernt die Daten erneut und kann zu unterschiedlichen Dimensionen führen. –
Ich habe versucht, mit poly.transform() auf pred_data, Python immer noch eine Fehlermeldung zurückgegeben: X Form entspricht nicht Trainingsform. –