【发布时间】: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