あなたが最初の場所でモデルに合わせてパッツィを使用した場合は、「ねえ、あなたは私の最初の計画行列を構築しました方法を知っている私に、別のと同じ方法を構築する?」それを教えてください:
# Set up training data
train_Y, train_X = dmatrices("Response ~ ...", train, return_type="dataframe")
# Save patsy's record of how it built this matrix:
design_info = train_X.design_info
# Re-use it to build the test matrix
test_X = dmatrix(design_info, test, return_type="dataframe")
また、あなたがゼロから新しい行列を構築することができます:あなたはそれを行うことができれば
# Use 'dmatrix' and leave out the left-hand-side of the formula
test_X = dmatrix("~ ...", test, return_type="dataframe")
最初のアプローチが優れています。たとえば、patsyがエンコードするようにするカテゴリ変数があるとします。あなたの訓練セットには10のカテゴリーがありますが、あなたのテストセットには5つしかありません。最初のアプローチを使用する場合、patsyは10個のカテゴリがどこにあるのかを覚えて、10個の列(一部はすべて0)でテスト行列を生成します。 2番目のアプローチを使用すると、patsyは10列のテスト行列と5列のテスト行列を生成し、モデルコードは予期した形状ではないため、クラッシュする可能性があります。
patsyのcenter
関数を変数に使用すると、最初のアプローチでは、トレーニングデータからどの値を減算してテストデータに再利用するかが自動的に記憶されます。あなたが欲しいもの。 2番目のアプローチでは、テストデータを使用してセンターを再計算します。これにより、実際に間違った結果が黙って発生する可能性があります。
ありがとうございました!それはとても役に立ちました – anticavity123