2016-10-14 12 views
0
import numpy as np 

X_mini=np.array([[ 4, 2104, 1], 
    [ 1, 1600, 3], 
    [ 3, 2400, 100]]) 

def feature_normalization(X): 

    row_length=len(X[0:1][0]) 

    for i in range(0, row_length): 
     if not X[:,i].std()==0: 

      temp=(X[:,i]-X[:,i].mean())/X[:,i].std() 
      print(temp) 
      X[:,i]=temp 



feature_normalization(X_mini) 
print(X_mini) 

出力更新するとき:奇妙な行動行列

[ 1.06904497 -1.33630621 0.26726124] 
[ 0.209937 -1.31614348 1.10620649] 
[-0.72863911 -0.68535362 1.41399274] 
[[ 1 0 0] 
[-1 -1 0] 
[ 0 1 1]] 

私の質問ですが、なぜX_mini(feature_normalizationを適用した後)にプリントアウトされているものに対応していませんか?

答えて

0

あなたの配列は整数型の値を保持しています(おそらくint64)。 分数を挿入すると、分数がintに変換されます。

あなたは明示的に作成したアレイのタイプを指定することができます。

X_mini = np.array([[ 4.0, 2104.0, 1.0], 
     [ 1.0, 1600.0, 3.0], 
     [ 3.0, 2400.0, 100.0]], dtype=np.float128) 

またnumpy.ndarray.astypedocs)を使用して、別の型に配列を変換することができます。