【问题标题】:K-means clustering on data set with mixed data using Scikit-learn使用 Scikit-learn 对具有混合数据的数据集进行 K-means 聚类
【发布时间】:2018-02-21 08:47:23
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    我想您已经对数据进行了单热编码。为了使用 K-means 聚类,重新缩放数据很重要,因为您可能有一些会主导聚类的数值特征。您可以尝试来自here 的几个重新缩放器(最著名的是 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)

    【讨论】:

    • 感谢@elkoul 指出重新缩放。我最想知道的是如何将这个单热编码数据与普通数据帧一起使用,即如何将这个由 0 和 1 组成的大数组附加到包含浮点数的数据帧中。
    • 进行热编码的一种简单方法是使用pandas.get_dummies。你可以看看here。
    • 谢谢@elkoul
    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 2021-05-30
    • 2019-01-21
    • 2016-04-04
    • 1970-01-01
    • 2019-05-03
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多