我有几个用户名和他们的薪水。现在我需要根据他们的薪水对用户进行聚类。我正在使用 KMeans 聚类,以下是我的代码
from sklearn.cluster import KMeans
from sklearn.preprocessing import LabelEncoder
import pandas as pd
le = LabelEncoder()
data = pd.read_csv('kmeans.data',header=None, names =['user', 'salary'])
# Numerical conversion
data['user'] = le.fit_transform(data['user'])
km = KMeans(n_clusters=4, random_state= 10, n_init=10, max_iter=500)
km.fit(data)
data['labels'] = le.inverse_transform(data['user'])
data['cluster'] = km.labels_
print data
但是我的成绩很差,而且有很多重叠的薪水。
代码有什么问题吗?如何提高成绩?
或者集群在这里是否不是正确的方法?那么如何仅根据薪水对用户进行聚类呢?
km.fit(data['salary'])
编辑:
我想出了一种使用numpy.reshape解决问题的方法
km.fit(data['salary'].reshape(-1,1))