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)

一种选择可能是在预处理步骤之前简单地为每个特征添加一个:

data += 1
于 2012-10-09T21:04:41.947 回答