尽管我的数据帧到处都是浮点值。通过k均值传递数据帧时,它表明无法将字符串转换为浮点数。
如何将nan值转换为整个数据帧中的浮点值?
答案 0 :(得分:0)
根据您的代码,您似乎只实例化了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'
是新列名的字符串,您当然可以随意命名
答案 1 :(得分:0)
这将完成您的工作,并将所有字符串格式的列转换为分类代码,或者对这些列中的变量使用一种热编码。
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_)