通过 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_)
虽然我的数据框到处都是浮点值。通过 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_)