我正在尝试使用MLlib的gmm实现来聚类大型数据集。问题是我的数据集有分类输入,它们被转换为gmm列车功能中的浮点数;所以我担心该算法不会将分类数据视为分类数据,而是将其视为连续数据。当我尝试将字母数字字符串作为训练传递给gmm的训练函数时,它抛出了一个类型错误,说它无法将给定的字符串转换为浮点数。有没有办法处理使用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是分类变量。
`
答案 0 :(得分:1)
高斯分布仅在连续变量上定义。
因为正常(高斯)分布是连续的。
因此,将您的分类属性编码为连续变量可能是除了忽略它们之外您可以做的最好的。