‘RDD’对象没有属性 ‘_jdf’ pyspark RDD

我是pyspark的新手。我想对一个文本文件进行一些机器学习操作。

from pyspark import Rowfrom pyspark.context import SparkContextfrom pyspark.sql.session import SparkSessionfrom pyspark import SparkConfsc = SparkContextspark = SparkSession.builder.appName("ML").getOrCreate()train_data = spark.read.text("20ng-train-all-terms.txt")td= train_data.rdd #transformer df to rddtr_data= td.map(lambda line: line.split()).map(lambda words: Row(label=words[0],words=words[1:]))from pyspark.ml.feature import CountVectorizervectorizer = CountVectorizer(inputCol ="words", outputCol="bag_of_words")vectorizer_transformer = vectorizer.fit(td)

对于我的最后一条命令,我得到了错误”AttributeError: ‘RDD’对象没有属性 ‘_jdf’

enter image description here

谁能帮帮我吗?谢谢


回答:

你不应该对rdd使用CountVectorizer。相反,你应该尝试在dataframe本身中形成单词数组,如下所示:

train_data = spark.read.text("20ng-train-all-terms.txt")from pyspark.sql import functions as Ftd= train_data.select(F.split("value", " ").alias("words")).select(F.col("words")[0].alias("label"), F.col("words"))from pyspark.ml.feature import CountVectorizervectorizer = CountVectorizer(inputCol="words", outputCol="bag_of_words")vectorizer_transformer = vectorizer.fit(td)

然后它应该可以正常工作,这样你就可以调用transform函数,如下所示:

vectorizer_transformer.transform(td).show(truncate=False)

现在,如果你想坚持使用旧式的转换为rdd样式,那么你需要修改某些代码行。以下是你的修改后的完整代码(可运行):

from pyspark import Rowfrom pyspark.context import SparkContextfrom pyspark.sql.session import SparkSessionfrom pyspark import SparkConfsc = SparkContextspark = SparkSession.builder.appName("ML").getOrCreate()train_data = spark.read.text("20ng-train-all-terms.txt")td= train_data.rdd #transformer df to rddtr_data= td.map(lambda line: line[0].split(" ")).map(lambda words: Row(label=words[0], words=words[1:])).toDF()from pyspark.ml.feature import CountVectorizervectorizer = CountVectorizer(inputCol="words", outputCol="bag_of_words")vectorizer_transformer = vectorizer.fit(tr_data)

但我建议你坚持使用dataframe方式。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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