【问题标题】:ValueError: Input contains NaN, infinity or a value too large for dtype('float64')- km.fit(x)ValueError:输入包含 NaN、无穷大或对于 dtype('float64')-km.fit(x) 来说太大的值
【发布时间】:2021-10-31 08:22:18
【问题描述】:

我正在使用 python 对我拥有的一组数据进行聚类,但它向我显示了这个错误,我不知道应该在哪里进行更改以及在哪个文件中进行更改:

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

以下是我的代码:

from sklearn import datasets
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans
from apyori import apriori

dataset = pd.read_csv('autos1.csv',encoding= 'unicode_escape')

x = dataset.iloc[ : ,  1:3]

km = KMeans(n_clusters = 2, random_state = 21)

km.fit(x)

centers = km.cluster_centers_

print(centers)

clusters = x.copy()
clusters ['cluster_id'] = km.fit_predict(x)

plt.xlabel('price')
plt.ylabel('yearOfRegistration')

plt.scatter(clusters['fuelType'], clusters['yearOfRegistration'], c='black', cmap='rainbow')

plt.xlabel('price')
plt.ylabel('yearOfRegistration')

plt.show()

plt.scatter(centers[:,0], centers[:,1], c = 'black', s = 100 , alpha = 0.9 )
plt.scatter(clusters['price'], clusters['yearOfRegistration'], c=clusters['cluster_id'], cmap='rainbow')

plt.xlabel('price')
plt.ylabel('yearOfRegistration')

plt.show()

【问题讨论】:

    标签: python cluster-analysis prediction pychart


    【解决方案1】:

    您需要从数据集中删除所有包含 nan 或 nonfinite 值的行。

    # Only select rows that have all finite entries.
    x = x[np.all(np.isfinite(x), axis=1)]
    

    np.isfinite 将返回一个与您的输入形状相同的数组,因此将axis=1 传递给np.all 以检查每行的所有列(轴1)是否都是有限的。 然后,索引到您的数组以仅选择这些行。

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2016-07-31
      • 2020-08-16
      • 2020-05-25
      • 2019-02-17
      • 2020-10-23
      • 2023-01-11
      • 2019-08-25
      • 2017-02-19
      相关资源
      最近更新 更多