【发布时间】:2018-07-02 00:37:57
【问题描述】:
我正在应用频繁的模式分析,需要一些有关输入类型的帮助。
首先,我使用 stringindexer 将分类变量转换为数字。
之后,我为每个分类值创建一个唯一编号,如下所示:
add_100=udf(lambda x:x+100,returnType=FloatType())
add_1000=udf(lambda x:x+1000,returnType=FloatType())
df = df.select('cat_var_1', add_1000('cat_var_2').alias('cat_var_2_final'), add_10000('cat_var_3').alias('cat_var_3_final'))
我的下一步是创建一个具有特征的向量:
featuresCreator = ft.VectorAssembler(inputCols=[col for col in features], outputCol='features')
df=featuresCreator.transform(df)
最后,我尝试拟合我的模型:
from pyspark.ml.fpm import FPGrowth
fpGrowth = FPGrowth(itemsCol="features", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)
并得到这个错误:
u'requirement failed: 输入列必须是ArrayType,但是得到了 org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7.
那么,问题是,如何将向量转换为数组?或者,我还有其他方法可以解决这个问题吗?
【问题讨论】:
标签: python apache-spark machine-learning pyspark user-defined-functions