通过 k-means 传递数据帧时出错

error while passing data-frame through k-means

虽然我的数据框到处都是浮点值。通过 k-means 传递数据框时,它显示无法将字符串转换为浮点数。

如何将整个数据框中的 nan 值(如果有)转换为浮点值?

根据您的代码,您似乎只实例化了 KMeans,但没有使用它。 您需要干净的输入数据 X( 无字符串等),我们称它为 X

kmeans = KMeans(n_clusters=4,init='k-means++', max_iter=600, algorithm = 'auto')
clusters = kmeans.fit_predict(X)

现在 clusters 具有 X 中每个样本的聚类编号。

(或者,您可以分别执行 fit(X) 和稍后的 predict(X),但最终是 predict 输出您需要的集群标签)

如果你想稍后获得数据聚类,你应该使用 kmeans.predict(new_data) 而不是 fit_predict() 以便 KMeans 使用 X 的学习,并将其应用于你的 new_data (或者根据您的需要,您可能想要重新训练它)。
希望这有帮助。

最后,您可以通过以下操作向 pandas DataFrame 添加另一列:

df['cluster'] = clusters

其中 'cluster' 是新列名称的字符串,您当然可以随意命名它

这将完成您的工作,并将字符串格式的所有列转换为分类代码,或者对这些列中的变量使用一种热编码。

import numpy as np  
from sklearn.cluster import KMeans
import pandas
df = pandas.read_csv('zipIncome.csv')
print(df)

df[col_name]= df[col_name].astype('category')
df[col_name] = df[col_name].cat.codes
kmeans = KMeans(n_clusters=4,init='k-means++', max_iter=600, algorithm = 'auto').fit(df)
print (kmeans.labels_)
print(kmeans.cluster_centers_)