通过k均值传递数据帧时出错

时间:2019-02-28 02:55:07

标签: machine-learning scikit-learn anaconda cluster-analysis k-means

尽管我的数据帧到处都是浮点值。通过k均值传递数据帧时,它表明无法将字符串转换为浮点数。

如何将nan值转换为整个数据帧中的浮点值?

2 个答案:

答案 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_)  
相关问题