【发布时间】:2017-06-14 15:08:19
【问题描述】:
我刚刚开始使用 Spark 的 MLlib。我想训练一个简单的模型(例如逻辑回归)。我的期望是我需要“告诉”模型将哪一列用作目标以及将哪一列视为特征。
但是,看起来应该只有一列包含特征(一列包含向量作为值)。
所以,我的问题是:如何构造这样一个向量值列?我尝试了以下方法(但它不起作用):
df = df.withColumn('feat_vec', [df['_c0'], df['_c1'], df['_c1'], df['_c3'], df['_c4']])
添加
我也试过这个:
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=['_c0', '_c1', '_c2', '_c3', '_c4'], outputCol='feat_vec')
df = assembler.transform(df)
结果我收到以下错误消息:
pyspark.sql.utils.IllegalArgumentException: u'Data type StringType is not supported.'
【问题讨论】:
-
我认为你搞错了。看看here。
-
在这里查看我对 VectorAssembler 的回答:stackoverflow.com/questions/43355341/spark-pipeline-error/…
-
我不确定这是@TDrabas 的问题
-
VectorAssembler 的问题正是我所指出的:一个(或多个)元素或 RDD 行是字符串。您可以在此之前使用 OneHotEncoder 或以某种方式将字符串编码为数字。如果你想建立一个有监督的模型,比如逻辑回归,我建议把它放到 LabeledPoint 中。
标签: apache-spark pyspark apache-spark-mllib