Python-输入包含NaN、无穷大或对数据类型太大的值(';float64';)
我是Python新手。我正在尝试使用sklearn.cluster。 这是我的密码:Python-输入包含NaN、无穷大或对数据类型太大的值(';float64';),python,pandas,machine-learning,scikit-learn,k-means,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 contain
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
df.info()
INT64索引:362358条,135至47145
数据列(共8列):
用户362358非空浮点64
小时362352非空浮点64
第362352分钟非空浮点64
第362352天非空浮点64
第362352个月非空浮动64
年份362352非空浮点64
纬度362352非空浮点64
经度362352非空浮点64
数据类型:float64(8)
内存使用率:24.9 MB
非常感谢,我认为它只接受“类似数组、形状=[n_样本、n_特征]”,而不接受熊猫数据帧。因此,尝试将数据帧的值传递给它,如下所示:
kmeans=MiniBatchKMeans(n_clusters=2)
kmeans.fit(df.values)
或对其进行塑形以正确运行函数。希望能有所帮助。通过查看您的
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
INT64索引:362358条,135至47145
数据列(共8列):
用户362358非空浮点64
小时362352非空浮点64
第362352分钟非空浮点64
第362352天非空浮点64
第362352个月非空浮动64
年份362352非空浮点64
纬度362352非空浮点64
经度362352非空浮点64
数据类型:float64(8)
内存使用率:24.9 MB
通过查看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
因此,您可以使用iloc()将数据切片到合适的位置:
df=pd.read\u csv(位置1,encoding=“ISO-8859-1”).iloc[2:20]
范围索引:18项,2至19项
数据列(共6列):
邮政编码18非空int64
纬度18非空浮点64
经度18非空浮点64
城市18非空对象
状态18非空对象
county 18非空对象
数据类型:float64(2)、int64(1)、object(3)
我检查没有Nan或无穷大值。
请告诉我们您是如何做到的。对数据进行排序并检查顶部/底部值。我假设df
是一个数据帧?如果是,请尝试kmeans.fit(df.as_matrix())
。Scikit learn没有数据帧的概念,只有numpy阵列。谢谢@Fabio,我尝试了这个,但我仍然有相同的错误,我在相同的情况下。已验证数据没有空值,但收到上述错误消息