カテゴリ列のあるデータセットがあります。線形回帰を使用するために、I1-この列をホットエンコードします。
私のセットには、カテゴリ列を含む10列があります。その列を削除し、1-hotエンコードされた行列を追加した後、14列(10-1 + 5)になります。
そこで、線形回帰モデルを形状の行列(n、14)でトレーニング(適合)します。
トレーニング後、トレーニングセットのサブセットでテストしたいので、最初に5つだけを取得して、同じパイプラインに通します。しかし、これらの5つには、最初に3つのカテゴリしか含まれていません。したがって、パイプラインを通過した後、2つのカテゴリが欠落しているため、形状のマトリックス(n、13)だけが残ります。
1ホットエンコーダに5つのカテゴリを使用させるにはどうすればよいですか?
sklearnのLabelBinarizerを使用しています。
エラーは、「テストデータを同じパイプラインに通す」ことです。基本的に私はやっていた:
data_prepared = full_pipeline.fit_transform(train_set)
lin_reg = LinearRegression()
lin_reg.fit(data_prepared, labels)
some_data = train_set.iloc[:5]
some_data_prepared = full_pipeline.fit_transform(some_data)
lin_reg.predict(some_data_prepared)
# => error because mismatching shapes
問題のある行は次のとおりです。
some_data_prepared = full_pipeline.fit_transform(some_data)
を実行することによりfit_transform
、LabelBinarizerを3つのラベルのみを含むセットに適合させます。代わりに私はすべきです:
some_data_prepared = full_pipeline.transform(some_data)
このように、フルセット(train_set
)に適合したパイプラインを使用して、同じ方法で変換します。
ありがとう@VivekKumar
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加