‘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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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