【问题标题】:PySpark Pipeline - Logistic Regression results too good to be truePySpark Pipeline - 逻辑回归结果好得令人难以置信
【发布时间】:2019-11-26 15:37:50
【问题描述】:

我正在开展一个项目,我试图在使用简单的 PySpark ML Pipeline 时预测评论是正面还是负面。一切似乎都有效,但是,我认为出了点问题,我只是忽略了它。我的准确度得分为 0.9997,而其他人在此数据集上获得的结果为 0.90(来自Kaggle)。

输入数据由带有“评论”列的 DF 组成,该列包含带有评论的字符串和“标签”列,包含标签。

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

# 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标签列和特征列是什么...

【问题讨论】:

    标签: python pyspark logistic-regression


    【解决方案1】:

    您的特征包含标签

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

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

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

    【讨论】:

    • 是的,就是这样,我也注意到了。非常感谢!
    猜你喜欢
    • 2016-12-23
    • 2013-01-06
    • 2018-02-02
    • 2019-02-04
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2017-09-01
    相关资源
    最近更新 更多