【问题标题】:PCA() got an unexpected keyword argument 'k'PCA() 得到了一个意外的关键字参数“k”
【发布时间】:2018-04-28 22:14:50
【问题描述】:

我正在尝试在 python 脚本上使用 PySpark API 从 spark 应用程序执行 pca。我这样做:

pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")
PCAmodel = pca.fit(data)

当我在 pyspark shell 中运行这两个代码行时,它可以工作并返回良好的结果,但是在应用程序脚本中,我得到了错误类型:

PCA() 得到了一个意外的关键字参数“k”

PS:在这两种情况下,我都使用 Spark 2.2.0

问题出在哪里?为什么它在 PySpark shell 中工作而不是在应用程序中工作?

【问题讨论】:

  • 我使用的是 spark 2.2.0

标签: pyspark pca apache-spark-ml


【解决方案1】:

在一种情况下,您可能从 ml 导入:

from pyspark.ml.feature import PCA

和另一个mllib

from pyspark.mllib.feature import PCA

【讨论】:

  • 不,这不是我的情况,两种情况我都在使用from pyspark.ml.feature import PCA
【解决方案2】:

您确定您还没有从scikit-learn 导入PCA您在应用程序脚本中从 PySpark 导入它之后?

spark.version
# u'2.2.0'

from pyspark.ml.feature import PCA
from sklearn.decomposition import PCA

# PySpark syntax with scikit-learn PCA function
pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures") 
# Error:  
TypeError: __init__() got an unexpected keyword argument 'k'

颠倒导入顺序不会产生错误(未显示)。

【讨论】:

    【解决方案3】:

    尝试重命名你的类:

    from pyspark.ml.feature import PCA as PCAML
    from sklearn.decomposition import PCA as PCASK
    
    pca_ml = PCAML(k=3, inputCol="features", outputCol="pcaFeatures")
    

    那么,不应该混淆你叫哪一个。

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2021-03-17
      • 2020-10-01
      • 2018-06-19
      相关资源
      最近更新 更多