ValueError:数组不能包含 infs 或 NaNs
Posted
技术标签:
【中文标题】ValueError:数组不能包含 infs 或 NaNs【英文标题】:ValueError: array must not contain infs or NaNs 【发布时间】:2016-06-20 23:45:55 【问题描述】:我有一个 csv 文件,其中的数据格式如下(我的数据集要大得多):
Image Id,URL,Latitude,Longitude,Address
10758202333,https://farm8.staticflickr.com/7408/10758202333_b6c29d93b1_q.jpg,51.482826,-0.167112,Cadogan Pier Chelsea Embankment Chelsea Royal Borough of Kensington and Chelsea London
23204019400,https://farm6.staticflickr.com/5688/23204019400_fb6879abe3_q.jpg,51.483106,-3.171207,Greggs Station Terrace Plasnewydd Cardiff Wales CF United Kingdom
11243511074,https://farm3.staticflickr.com/2818/11243511074_e1e2f1b99c_q.jpg,51.483297,-0.166534,Albert Bridge Chelsea Embankment Chelsea Royal Borough of Kensington and Chelsea London Greater London England SW3 5SY United Kingdom
22186903335,https://farm6.staticflickr.com/5697/22186903335_de53168305_q.jpg,51.483394,-3.176926,Greyfriars House Greyfriars Road Plasnewydd Cardiff Wales CF United Kingdom
22197179851,https://farm6.staticflickr.com/5786/22197179851_a818b17fae_q.jpg,51.483394,-3.176926,Greyfriars House Greyfriars Road Plasnewydd Cardiff Wales CF United Kingdom
22174235522,https://farm1.staticflickr.com/589/22174235522_3ffd1de2bb_q.jpg,51.483394,-3.176926,Greyfriars House Greyfriars Road Plasnewydd Cardiff Wales CF United Kingdom
22160755536,https://farm1.staticflickr.com/761/22160755536_8e23e9ed32_q.jpg,51.483394,-3.176926,Greyfriars House Greyfriars Road Plasnewydd Cardiff Wales CF United Kingdom
7667114130,https://farm8.staticflickr.com/7269/7667114130_117849250a_q.jpg,51.484563,-3.178181,Oybike Gorsedd Gardens Road Cathays Cardiff Wales CF United Kingdom
17136775881,https://farm9.staticflickr.com/8780/17136775881_363c2379ef_q.jpg,51.484608,-3.178845,Oybike Gorsedd Gardens Road Cathays Cardiff Wales CF United Kingdom
7110881411,https://farm9.staticflickr.com/8162/7110881411_f0fe3d7214_q.jpg,51.484644,-3.178099,Oybike Gorsedd Gardens Road Cathays Cardiff Wales CF United Kingdom
11718453936,https://farm4.staticflickr.com/3700/11718453936_148af12df6_q.jpg,51.484661,-3.179117,King Edward VII Avenue Cathays Cardiff Wales CF United Kingdom
20218915752,https://farm1.staticflickr.com/352/20218915752_4282c1f9b8_q.jpg,51.484683,-3.179147,King Edward VII Avenue Cathays Cardiff Wales CF United Kingdom
我的代码如下,我知道它并不多,但我只是希望能够看到现在出现的带有质心的集群图。但是我收到一个错误“ValueError: array must not contain infs or NaNs”
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans, kmeans2, whiten
df = pd.read_csv('dataset_import.csv')
df.head()
coordinates = df.as_matrix(columns=['latitude', 'longitude'])
N = len(coordinates)
k = 100
i = 50
w = whiten(coordinates)
cluster_centroids, closest_centroids = kmeans2(w, k, iter=i, minit='points')
plt.figure(figsize=(10, 6), dpi=100)
plt.scatter(cluster_centroids[:,0], cluster_centroids[:,1], c='r', alpha=.7, s=150)
plt.scatter(w[:,0], w[:,1], c='k', alpha=.3, s=10)
plt.show()
任何人都可以解释为什么会发生这种情况,也许我的代码中的一些 fugures 是错误的等等。谢谢!
【问题讨论】:
@Anony-Mousse 无穷大还是不是数字?我的坐标列只包含数字,没有一列是空的nan_indices = np.where(np.isnan(w))
@ali_m 感谢您的帮助,我会将它放在我的代码中的哪个位置,我已经尝试将它放入,但我仍然遇到同样的错误。对不起,我对 python 很陌生,更不用说聚类算法了,所以谢谢你的帮助
该行将告诉您w
中等于 NaN 的任何元素的行和列索引(您可以对 np.isinf
执行相同的操作以查找无限值)。有了这些信息,你的下一个工作就是弄清楚为什么它们等于 NaN。
【参考方案1】:
我遇到了同样的问题,我通过清除 NaN 和 infs 解决了。
def clean(serie):
output = serie[(np.isnan(serie) == False) & (np.isinf(serie) == False)]
return output
当我绘制绘图时,我使用此功能以临时方式清理我的数据,它现在可以工作了。
fig = plt.figure()
clean(data[col]).plot(kind='kde')
plt.show()
或者像这样:
sns.kdeplot(clean(data[col]), bw=0.1, shade=True, legend=False)
【讨论】:
这对我有用。我从“gaussian_kde()”收到一个错误,说“数组不能包含 infs 或 NaN” 啊,谢谢!我花了三天时间才找到您的解决方案:)以上是关于ValueError:数组不能包含 infs 或 NaNs的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:数组不能在 Python3.X 的 SpectralCoclustering 中包含 infs 或 NaNs
尝试在 python 中对数组进行线性回归,但我不断收到错误“数组不得包含 infs 或 NaN”。没有 inf 或 NaN
使用 statsmodels 忽略多个 OLS 回归中的缺失值
ValueError: Mountpoint 不能包含空格。 (科拉布)
运行MATLAB算法程序时报错SVD 的输入不能包含 NaN 或 Inf,求大神指导
VARMAX 结果扩展导致 ValueError: array must not contain infs or NaNs