我一直在研究pyspark的分类问题,并创建了一个RDD和地图,但是当我尝试添加LabeledPoint时,我收到了错误
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
以下是代码和输出:
%pyspark
from pyspark.mllib.regression import LabeledPoint
features = df.map(lambda row: row[0:15])
print features.take(1)
[(u'12.95', u'AOL.COM', u'3', u'1', u'-4276', u'7', u'0', u'1', u'1', u'1', u'0', u'1', u'0', u'0', u'1')]
lab = df.map(lambda row: row[16])
print lab.take(1)
[u'0']
transformedData = lab.zip(features)
print transformedData.take(2)
[(u'0', (u'12.95', u'AOL.COM', u'3', u'1', u'-4276', u'7', u'0', u'1', u'1', u'1', u'0', u'1', u'0', u'0', u'1')), (u'0', (u'11.01', u'AOL.COM', u'3', u'1', u'-4276', u'7', u'0', u'1', u'1', u'1', u'0', u'1', u'0', u'0', u'1'))]
transformedData = transformedData.map(lambda row: LabeledPoint(row[0],[row[1]]))
print transformedData.take(2)
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
答案 0 :(得分:0)
第二个参数是数字向量或列表而不是字符串列表:
参数:
- label - 此数据点的标签。
- features - 此点的特征向量(NumPy数组,列表,pyspark.mllib.linalg.SparseVector或scipy.sparse列矩阵)。