如何在处理分类变量时使用 PySpark 的 MLLIB 的 GMM?



我正在尝试使用 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 是分类变量。

'

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

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

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

最新更新