Pyspark ML错误:对象没有属性map

以下是我的数据框和代码

df=    a b  c d    1 3  10 110    2 5  12 112    3 6  17 112    4  8  110 442

以下是我的代码

spark =SparkSession.builder.appName('dev_member_validate_spark').config('spark.sql.crossJoin.enabled','true').getOrCreate()sqlCtx=SQLContext(spark)from pyspark.ml.linalg import DenseVectorfrom pyspark.mllib.regression import LabeledPointtemp = df.select("a","b").map(lambda line:LabeledPoint(line[0],[line[1:]]))

当我执行temp=这一行时,得到以下错误

错误:Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/opt/cloudera/parcels/SPARK2-2.1.0.cloudera1-  1.cdh5.7.0.p0.120904/lib/spark2/python/pyspark/sql/dataframe.py", line 964, in __getattr__  "'%s' object has no attribute '%s'" % (self.__class__.__name__, name))AttributeError: 'DataFrame' object has no attribute 'map'

我使用的是Pyspark 2.1和Cloudera 5.10

我参考以下链接进行上述脚本编写:

https://databricks.com/product/getting-started-guide/machine-learning

请帮助我解决这个问题。


回答:

首先请注意:有两个独立的ML库:第一个是你导入的线性代数库,即pyspark.ml。第二个是从pyspark.mllib导入的LabelPoint

尝试混用这两个包会遇到很多问题。尽量坚持使用一个,不要混用。

其次,关于你遇到的异常:temp = df.select("a","b").map(...)df是一个DataFrame,它没有map方法。

但请接受我的第一个建议 – 不要混用mllibml模块。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注