0

このnumpy配列がどのように作成されるか知りたい場合は、これらの質問を見てください

次のようなものがあると仮定しましょう(前処理後にこれからnumpy array作成され、以下の配列もnumpyによってシャッフルされているため、結果はランダムです)

[[ 3  2  2 ...,  0  0  0]
 [14  1  0 ...,  0  0  0]
 [ 3  2  1 ...,  0  0  0]
 ..., 
 [ 1  1  1 ...,  0  0  0]
 [ 2  2  2 ...,  0  0  0]
 [ 1  1  0 ...,  0  0  0]]

データが大きいことは理解しています。600 通の電子メール (各電子メールは約 2000 語で構成されています) で構成されており、各電子メールにはインターネット上で一般的な 196 のスパム ワードに関する統計が含まれています。

コメントに記載されているStephen Marsland K-Means Neurel Network内で使用したいの"won't work if (0,0,...0) is in data"ですが、このコメントが何を指しているのかわかりませんか? ...(記号は数学と同じだと思いました。たとえば1...n、1とnの間にものがあります)。それが何か他のことを意味する場合、無効な分割の問題にどのように取り組むべきですか? ありがとう!

よくわかりませんが、データセットの何かがこのエラーを引き起こしています

RuntimeWarning: invalid value encountered in divide data = transpose(transpose(data)/normalisers)
4

1 に答える 1

2

...,、一度にコンソールに出力するにはデータが多すぎることを示しています。リンク先のコードのコメントは、データにすべてゼロのベクトルがある場合、前処理が機能しないことを意味していると思います。

Trueすべてゼロの特徴ベクトルがある場合は、次のようになります。

np.any(data.sum(1) == 0)

...行がデータの例であり、列が機能であると仮定します。

何が起こっているのか:

>>> from numpy import *
>>> data = array([[0,0,0],[1,2,3],[1,0,1]])
>>> normalisers = sqrt(sum(data**2,axis=1))*ones((1,shape(data)[0]))
>>> normalisers
array([[ 0.        ,  3.74165739,  1.41421356]])

そして、あなたはゼロで割っています。

>>> data = transpose(transpose(data)/normalisers)

1つのオプションは、前処理ステップの前にすべての機能に1つ追加することです。

data += 1
于 2012-10-09T21:04:41.947 に答える