使用Scikit-learn,K-means对具有混合数据的数据集进行聚类

时间:2018-02-21 08:47:23

标签: python machine-learning scikit-learn categorical-data one-hot-encoding

我正在尝试使用机器学习算法,并且拥有一个包含数字和分类数据的相当大的数据集。我在这里点了这篇文章:http://www.ritchieng.com/machinelearning-one-hot-encoding/将分类特征编码为数字:

我想尝试例如整个数据集的K-means聚类。我不知道如何使用我现在拥有的编码数据作为原始数据帧的一部分来运行机器学习算法。我真的很感激一个例子。

1 个答案:

答案 0 :(得分:1)

我认为您对数据进行了一次热编码。那么为了使用K-means聚类,重要的是重新调整数据,因为您可能有一些数字特征将主导您的聚类。您可以尝试使用here的几个rescalers(最着名的是MinMaxScaler和StandardScaler)。

之后,您可以参考here了解如何将KMeans与sklearn一起使用。一般来说,步骤如下:

您导入KMeans:

from sklearn.cluster import KMeans

你实例化一个KMeans对象,至少指定了簇的数量,这里我任意放置8:

kmeans = KMeans(n_clusters = 8)

然后用数据拟合对象(这里我的数据名为X):

kmeans.fit(X)

之后,您可以使用.labels_

查看分配给每一行的群集

kmeans.labels_

您还可以使用.predict预测群集中新的和看不见的数据(命名为new_X):

kmeans.predict(new_X)