【问题标题】:how to use pyspark's mllib's gmm while dealing with categorical variables?如何在处理分类变量时使用 pyspark 的 mllib 的 gmm?
【发布时间】:2016-08-20 02:51:30
【问题描述】:

我正在尝试使用 MLlib 的 gmm 实现对大型数据集进行聚类。问题是我的数据集有分类输入,这些输入在 gmm 的 train 函数中被转换为浮点数;所以我担心该算法不会将分类数据视为分类数据,而是将其视为连续数据。当我尝试将字母数字字符串作为训练传递给 gmm 的 train 函数时,它抛出了一个类型错误,说它无法将给定的字符串转换为浮点数。有没有办法使用 gmm 的 mllib 实现来处理对分类数据进行聚类的问题,或者 mllib 中是否有其他聚类算法可以使用分类变量进行聚类? rdd=sc.textFile('s3n://msd.data.test/sud/new_cls122016-04-26') # rdd1=rdd.map(lambda x:[x.split(',')[0],x.split(',')[1],x.split(',')[2],x.split(',')[3],x.split(',')[4],x.split(',')[5],x.split(',')[6],x.split(',')[7],x.split(',')[8]]) gmm=GaussianMixture.train(rdd1, 35,seed=10) label=gmm.predict(rdd1)

rdd1 是训练数据,第 0 到第 6 列是整数,第 7 和第 8 列是分类变量。

`

【问题讨论】:

  • 我不了解 MLlib,但我有一个不相关的提示。您可以将map 语句简化为import csv; rdd.map(lambda x: csv.reader(x)[:8])see here 以获得更多解释。
  • 不,我不想将 t 读取为 csv,我想看看在使用 gmm 时是否有处理分类数据的方法

标签: cluster-analysis pyspark apache-spark-mllib


【解决方案1】:

高斯分布仅在连续变量上定义。

因为正态(高斯)分布是连续的。

因此,将您的分类属性编码为连续变量可能是除了忽略它们之外您能做的最好的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2020-05-22
    • 1970-01-01
    • 2016-01-05
    • 2020-04-05
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多