私は、それぞれ100個の予測値を使って元のデータに1-3度の多項式変換を適合させることを実験しています。まず、元のデータを再構成し、2)テストセットと予測空間(データフィーチャ)にfit_transformを適用し、3)予測空間で線形予測を行い、4)次のコードを使用して配列にエクスポートした。Python sklearn多項式の前処理と次元の問題
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
しかし、私は私が欲しかったものを手に入れる、Pythonは(3、100)の配列を返していませんでした私は期待していたとして形状と、実際には、私はエラーメッセージを受信しませんでした
ValueError: shapes (100,10) and (4,1) not aligned: 10 (dim 1) != 4 (dim 0)
「再形成」または「fit_transform」ステップのいずれかに起因する寸法問題であると考えられます。これは簡単なテストであるはずだったので、私は混乱しました。誰も私にこのことを教えてくれますか?大変感謝しています。
ありがとうございます。敬具
、私はコメントで示唆されているように
テストデータの場合は常に 'transform()'を、ケースの場合は 'pred_data'を呼び出してください。 'fit_transform()'は以前の呼び出しを忘れてしまい、データを再び覚えてしまい、次元が違う可能性があります。 –
私はpred_dataにpoly.transform()を使用しようとしましたが、Pythonはまだエラーメッセージを返しました.Xシェイプはトレーニングシェイプと一致しません。 –