pyspark.sql.utils.IllegalArgumentException: ‘字段 “features” 不存在

我正在尝试使用SparkNLP对文本数据进行主题建模和情感分析。我已经完成了数据集的所有预处理步骤,但在LDA中遇到了错误。

错误

程序是:

from pyspark.ml import Pipelinefrom pyspark.ml.feature import StopWordsRemover, CountVectorizer, IDFfrom pyspark.ml.clustering import LDAfrom pyspark.sql.functions import col, lit, concat, regexp_replacefrom pyspark.sql.utils import AnalysisExceptionfrom pyspark.ml.feature import Tokenizer, RegexTokenizerfrom pyspark.sql.functions import col, udffrom pyspark.sql.types import IntegerTypefrom pyspark.ml.clustering import LDAfrom pyspark.ml.feature import StopWordsRemoverfrom pyspark.ml.feature import Normalizerfrom pyspark.ml.linalg import Vectorsdataframe_new = spark.read.format('com.databricks.spark.csv') \.options(header='true', inferschema='true') \.load('/home/[email protected]/Gourav/chap3/abcnews-date-text.csv')get_tokenizers = Tokenizer(inputCol="headline_text", outputCol="get_tokens")get_tokenized = get_tokenizers.transform(dataframe_new)remover = StopWordsRemover(inputCol="get_tokens", outputCol="row")get_remover = remover.transform(get_tokenized)counter_vectorized = CountVectorizer(inputCol="row", outputCol="get_features")getmodel = counter_vectorized.fit(get_remover)get_result = getmodel.transform(get_remover)idf_function = IDF(inputCol="get_features", outputCol="get_idf_feature")train_model = idf_function.fit(get_result)outcome = train_model.transform(get_result)lda = LDA(k=10, maxIter=10)model = lda.fit(outcome)

在IDF之后的DataFrame的架构:enter image description here


回答:

根据文档,LDA包括一个featuresCol参数,默认值为featuresCol='features',即保存实际特征的列名;根据您展示的架构,您的DataFrame中没有这样的列,因此出现了预期的错误。

目前尚不清楚您的DataFrame中哪个列包含特征 – get_features 还是 get_idf_feature(在您展示的样本中它们看起来相同);假设是get_idf_feature,您应该将LDA调用更改为:

lda = LDA(featuresCol='get_idf_feature', k=10, maxIter=10)

Spark(包括pyspark)ML API与例如scikit-learn及类似框架的逻辑相当不同且独特;其中一个区别确实是特征必须在相应DataFrame的单一列中。有关这个概念的一般演示,请参见我在PySpark中的KMeans聚类的回答(它是关于K-Means的,但逻辑是相同的)。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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