2017-06-02 11 views
1

私のデータは、次のような形状(2,3,4)のnumpy ndarrayです。 sklearn正規化によって各列の0-1スケールを正規化しようとしました。numpy ndarrayデータを正規化してください

from sklearn.preprocessing import normalize 

x = np.array([[[1, 2, 3, 4], 
     [2, 2, 3, 4], 
     [3, 2, 3, 4]], 
     [[4, 2, 3, 4], 
     [5, 2, 3, 4], 
     [6, 2, 3, 4]]]) 

x.shape ==> (2,3,4) 

x = normalize(x, norm='max', axis=0,) 

はしかし、私はエラーをキャッチ:

ValueError: Found array with dim 3. the normalize function expected <= 2. 

どのように私はこの問題を解決するのですか?

ありがとうございます。

答えて

1

scikit-learnは、ndarraysが多くても2つのdimであると考えます。それがで正常に動作しているnumpyのとはるかに簡単だし、また

from sklearn.preprocessing import normalize 

normalize(x.reshape(x.shape[0],-1), norm='max', axis=0).reshape(x.shape) 

を - だから、それは私たちに戻って元の形状に整形することができ2D配列を、与えnormalizeにそれを養う、2Dに再構築することです解決するためにジェネリックndarrays -

x/np.linalg.norm(x, ord=np.inf, axis=0, keepdims=True) 
+0

ありがとうございます!ただし、上記のコードは列単位ではなくデータ全体に適用されます。どのオプションを適用する必要がありますか? –

+0

@ChrisJoo列から列への意味が不明です。おそらく、軸= 0の代わりに軸= 1に沿って使用することを意味しますか?例えば、 – Divakar

+0

。第1列[[1,2,3]、[4,5,6]]は[[0.1667,0.333,0.5000]、 [0.6667,0.8333,1.0000]]と第2列(2,2,2,2 、2、2)は[1,1,1,1,1]とすべきである。 –

関連する問題