PCA()得到了一个意想不到的关键字参数' k'

时间:2017-11-15 15:44:44

标签: pyspark pca apache-spark-ml

我试图在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中工作而不适用于应用程序?

3 个答案:

答案 0 :(得分:3)

您可能在一个案例中从ml导入:

from pyspark.ml.feature import PCA

mllib在另一个:

from pyspark.mllib.feature import PCA

答案 1 :(得分:1)

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

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'

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

答案 2 :(得分:1)

尝试重命名您的课程:

from pyspark.ml.feature import PCA as PCAML
from sklearn.decomposition import PCA as PCASK

pca_ml = PCAML(k=3, inputCol="features", outputCol="pcaFeatures")

那么,你应该称之为混淆。