1

(X - means) / variance各行に対して実行することにより、行列を正規化しようとしています。

これをで実装しているのでMapReduce、最初に各列の平均と標準分散を計算し、次にmap各行を次のように計算します。

   matrix.map(lambda X: (X - means) / variance)

ただし、各行の最初の要素を無視したいと思いXます。これは、1と0のみを含むターゲット列です。

これどうやってするの?

4

1 に答える 1

2

Aが形状のnumpy配列であり、最初の列を除く各列の平均と分散を保持する形状の配列と形状(m, n + 1)もある場合、次のように正規化を行うことができます。mus2(n,)

A[:, 1:] = (A[:, 1:] - mu) / s2

何が起こっているのかを理解するには、放送がどのように機能するかを理解する必要があります。A[:, 1:]has shape(m, n)およびshapemuであるため、これらの最後の 2 つは、最初の次元と一致するように shape の前に 1 が追加されているため、配列として扱われ、算術演算中に最初で唯一の行の値がすべての行にブロードキャストされます。s2(n,)(1, n)

まだ行っていない場合は、平均配列と分散配列を次のように効率的に計算できます。

mu = (A[:, 1:].mean(axis=0)
s2 = A[:, 1:].var(axis=0)

引数を利用するためnp.stdに二乗を使用したい分散については、 docsを参照してください。ddof

別の注意として、正規化は通常、分散ではなく標準偏差で割って行われます。

于 2012-12-24T15:08:40.130 に答える