PySpark Pipeline - Logistic Regression 结果好得令人难以置信



我正在做一个项目,我试图在使用简单的 PySpark ML 管道时预测评论是正面还是负面。一切似乎都正常,但是,我认为有些不对劲,我只是忽略了它。我得到的准确率是 0.9997,而其他人在这个数据集上得到的结果是 0.90(来自 Kaggle(。

输入数据由一个DF组成,其中"review"列包含一个带有评论的字符串和一个包含标签的"label"列。

我正在按如下方式设置我的管道:

# Configure pipeline stages 
tok = Tokenizer(inputCol="review", outputCol="words") 
htf = HashingTF(inputCol="words", outputCol="tf", numFeatures=200) 
idf = IDF(inputCol="tf", outputCol="idf")
va = VectorAssembler(inputCols=["tf","idf", "label"], outputCol="features") 
lr = LogisticRegression(maxIter=10, regParam=0.01).setLabelCol("label").setFeaturesCol("features")
# Build the pipeline
stages=[tok, htf, idf, va,lr]
pipeline = Pipeline(stages=stages) 
# Fit the pipeline 
pipeline_model = pipeline.fit(train)
# Make predictions
df_results = pipeline_model.transform(train)
df_results = df_results.select('review','label','prediction')
test_results = pipeline_model.transform(test)
test_results = test_results.select('review','label','prediction') 

为什么会这样?我告诉 lr 标签列和功能列是什么......

您的要素包含标注

va = VectorAssembler(inputCols=["tf","idf", "label"], outputCol="features")

因此,您的 LR 将获得所需的输出作为输入:)只需将其从功能中删除:

va = VectorAssembler(inputCols=["tf","idf"], outputCol="features") 

最新更新