2017-08-06 12 views
1

応答変数を持たないテストセットが与えられました。私はすでにモデルを構築しており、テストセットの応答変数を予測する必要があります。回帰の書式設定行列

互換性があるようにテストデザインマトリックスをフォーマットする際に問題があります。

私はpatsyライブラリを使って行列を構築しています。

私は以下のコードは動作しません除いて、このような何かをしたい:

X = dmatrices('Response ~ var1 + var2', test, return_type = 'dataframe') 

正しいアプローチは何ですか?おかげ

答えて

0

あなたが最初の場所でモデルに合わせてパッツィを使用した場合は、「ねえ、あなたは私の最初の計画行列を構築しました方法を知っている私に、別のと同じ方法を構築する?」それを教えてください:

# 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番目のアプローチでは、テストデータを使用してセンターを再計算します。これにより、実際に間違った結果が黙って発生する可能性があります。

+0

ありがとうございました!それはとても役に立ちました – anticavity123