Python - 输入包含NaN,无穷大或对于dtype来说太大的值(' float64')

时间:2015-12-18 15:08:08

标签: python pandas machine-learning scikit-learn k-means

我是Python新手。我正在尝试使用sklearn.cluster。 这是我的代码:

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

非常感谢,

3 个答案:

答案 0 :(得分:2)

通过查看您的df.info(),似乎还有6个非空用户值,而不是任何其他列的值。这表示在每个其他列中有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

答案 1 :(得分:1)

我认为fit()仅接受&#34;类似数组,shape = [n_samples,n_features]&#34;,而不接受pandas数据帧。因此,请尝试将数据帧的值传递给它:

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

或者对它们进行整形以便正确运行该功能。希望有所帮助。

答案 2 :(得分:0)

  
    
      

通过查看你的df.info(),似乎还有6个非null用户值,而不是任何其他列的值。这表示在每个其他列中有6个空值,这就是错误的原因。

    
  

因此,您可以使用iloc()将数据切片到正确的位置:

df = pd.read_csv(location1, encoding = "ISO-8859-1").iloc[2:20]

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 18 entries, 2 to 19
Data columns (total 6 columns):
zip_code     18 non-null int64
latitude     18 non-null float64
longitude    18 non-null float64
city         18 non-null object
state        18 non-null object
county       18 non-null object
dtypes: float64(2), int64(1), object(3)