2015-12-18 81 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 
相關問題