PySpark MLlib:断言错误:分类器不会从 HasRawPredictionCol 扩展



我是Spark的新手。我想在 PySpark MLlib 中使用 SVM 的多类分类。我在Windows上安装了Spark 2.3.0。

但是我搜索并发现SVM仅在Spark中实现二元分类,因此我们必须使用一对一策略。当我尝试将一对一与 SVM 一起使用时,它给了我一个错误。我搜索了错误,但没有找到解决方案。

我使用了此链接中的一对一代码 https://spark.apache.org/docs/2.1.0/ml-classification-regression.html#one-vs-rest-classifier-aka-one-vs-all

这是我的代码:

from pyspark.mllib.classification import SVMWithSGD , SVMModel
from pyspark.ml.classification import OneVsRest
# instantiate the One Vs Rest Classifier.
svm_model = SVMWithSGD()
ovr = OneVsRest(classifier=svm_model)
# train the multiclass model.
ovrModel = ovr.fit(rdd_train)
# score the model on test data.
predictions = ovrModel.transform(rdd_test)

错误位于"ovr.fit(rdd_train("行中。这是错误

File "D:/Mycode-newtrials - Copy/stance_detection -norelieff-lgbm - randomizedsearch - modified - spark.py", line 1460, in computescores
ovrModel = ovr.fit(rdd_train)
File "D:python27libsite-packagespysparkmlbase.py", line 132, in fit
return self._fit(dataset)
File "D:python27libsite-packagespysparkmlclassification.py", line 1758, in _fit
"Classifier %s doesn't extend from HasRawPredictionCol." % type(classifier)
AssertionError: Classifier <class 'pyspark.mllib.classification.SVMWithSGD'> doesn't extend from HasRawPredictionCol.

您收到错误是因为您尝试将 Spark ML (OneVsRest( 中的模型与 Spark MLlib (SVMWithSGD的基本二进制分类器一起使用。

SparkMLlib(旧的,基于RDD的API(和Spark ML(新的,基于数据帧的API(不仅是不同的库,而且它们也不兼容:你不能在它们之间混合模型(仔细观察示例,你会发现它们从pyspark.ml导入基础分类器,而不是从pyspark.mllib,就像你在这里试图做的那样(。

不幸的是,在撰写本文时(Spark 2.3(Spark ML 不包括 SVM,您目前不能将该算法用作具有OneVsRest

...

相关内容

  • 没有找到相关文章

最新更新