(K-means聚类) numpy数组中的(0,0,…0)是什么意思?什么可能导致无效除法?

如果你想知道这个numpy数组是如何创建的,请查看以下问题

假设我有一个numpy数组,看起来像这样(由这个预处理创建,该数组也被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神经网络中使用它,该网络在注释中指出"如果数据中包含(0,0,...0),则无法工作",但我不确定这条注释指的是什么?(我以为...符号与数学中的1...n相同,即1和n之间有东西)。如果它意味着其他东西,我应该如何处理无效除法问题?谢谢!

我不确定,但我的数据集中有什么东西导致了这个错误

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

回答:

...,只是表示数据量太大,无法一次性打印到控制台。我认为你链接的代码中的注释意味着,如果你的数据中包含任何全零向量,预处理将无法工作。

如果你的数据中有任何全零特征向量,以下代码将返回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]))>>> normalisersarray([[ 0.        ,  3.74165739,  1.41421356]])

然后你就在除以零了。

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

一个可能的解决方案是在预处理步骤之前对每个特征加1:

data += 1

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注