2015-12-18 51 views
3

我是Python新手。我正在尝试使用sklearn.cluster。 这里是我的代码:Python - 输入包含NaN,无穷大或值太大的dtype('float64')

from sklearn.cluster import MiniBatchKMeans 

kmeans=MiniBatchKMeans(n_clusters=2) 
kmeans.fit(df) 

,但我得到了以下错误:

 50    and not np.isfinite(X).all()): 
    51   raise ValueError("Input contains NaN, infinity" 
---> 52       " or a value too large for %r." % X.dtype) 

ValueError: Input contains NaN, infinity or a value too large for dtype('float64') 

我检查了没有NAN或无穷大值。所以只剩下一个选择。但是,我的数据信息告诉我,所有变量都是float64,所以我不明白问题来自哪里。

df.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 362358 entries, 135 to 4747145 
Data columns (total 8 columns): 
User   362358 non-null float64 
Hour   362352 non-null float64 
Minute  362352 non-null float64 
Day   362352 non-null float64 
Month  362352 non-null float64 
Year   362352 non-null float64 
Latitude  362352 non-null float64 
Longitude 362352 non-null float64 
dtypes: float64(8) 
memory usage: 24.9 MB 

非常感谢,

+1

'我检查了没有南或无限的价值.'请告诉我们你是如何做到这一点的。 – cel

+0

对数据进行排序并检查顶部/底部值。 – Alexander

+0

我认为'df'是一个熊猫DataFrame?如果是这样,请尝试'kmeans.fit(df.as_matrix())'。 Scikit-learn没有DataFrame的概念,只有numpy数组的概念。 –

回答

1

我认为fit()只接受 “阵列状,形状= [N_SAMPLES次,n_features]”,而不是熊猫dataframes。因此,试图数据框的值传递到它:

kmeans=MiniBatchKMeans(n_clusters=2) 
kmeans.fit(df.values) 

或为了正确地运行功能塑造他们。希望有所帮助。

+0

谢谢@Fabio,我试过但我仍然有同样的错误 – Mitch

+0

我处于同样的情况。验证过的数据没有空值但收到上述错误消息 – Abhi

2

通过查看您的df.info(),看起来还有6个非null用户值比任何其他列的值还多。这表示在其他列中有6个空值,这就是错误的原因。

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 362358 entries, 135 to 4747145 
Data columns (total 8 columns): 
User   362358 non-null float64 
Hour   362352 non-null float64 
Minute  362352 non-null float64 
Day   362352 non-null float64 
Month  362352 non-null float64 
Year   362352 non-null float64 
Latitude  362352 non-null float64 
Longitude 362352 non-null float64 
dtypes: float64(8) 
memory usage: 24.9 MB 
相关问题