2016-04-30 13 views
1

私は、パンダのデータフレームのいくつかの列を正規化するためにsklearn標準スケーラを使用しています。 fit_transformは期待通りに機能しますが、変換は行いません。ここで私は何をすべきかです:slearn標準スケーラ変換VS fit_transform出力

non_categorical_variable = ['var1','var5'] 
scaler = StandardScaler() 
train[non_categorical_variable] = scaler.fit_transform(train[non_categorical_variable]) 

そして、それは完璧に動作しますが、これは動作しません:

test[non_categorical_variable] = scaler.transform(test[non_categorical_variable]) 

そして、これはエラーメッセージです:

File "main_FM.py", line 286, in predict_first_stage

test[non_categorical_features] = scaler.transform(test[non_categorical_features])

TypeError: 'coo_matrix' object has no attribute 'getitem'

私は単純に入力した場合次のすべてが動作し、一致します。

print test[non_categorical_variable] 
print scaler.transform(test[non_categorical_variable]) 

print type(test[non_categorical_variable]) 
print type(scaler.transform(test[non_categorical_variable])) 

print test[non_categorical_variable].shape 
print scaler.transform(test[non_categorical_variable]).shape 

ありがとうございました!

+0

私たちが試してみるためにいくつかのサンプルデータをモックアップできますか? – flyingmeatball

+0

は、それらの印刷ステートメントの出力を与えることができれば素晴らしいでしょう。さらに、エラーを再現する最小限の例を作成することができればさらに大きくなります。 'transform'を呼び出すと、それは以前にフィッティングされた' scaler'か新しいものかですか?これは、sklearnとpandasの奇妙で完全に成熟したやりとりではないかもしれません(関連する列をまずnumpyに変換して再確認します)。 – eickenberg

+0

'non_categorical_features'はリストですか?あなたが表示しているエラーはスケーラから来ません(エラーメッセージの一部を投稿していない限り)。また、印刷文では、 'non_categorical_variable'ではなく' non_categorical_features'を使用しています – Dimosthenis

答えて

0

おそらくtestは疎な行列ですが、trainはそうではありません。したがって、疎な行列はgettitemインタフェースをサポートしていないため、test[non_categorical_variable]は失敗します。

OneHotEncoderを使用している場合は、sparse引数をfalseに設定できます。

関連する問題