PySpark MLlib: AssertionError: Classifier doesn't extend from HasRawPredictionCol
PySpark MLlib: AssertionError: Classifier doesn't extend from HasRawPredictionCol
我是 Spark 的新手。我想在 PySpark MLlib 中对 SVM 使用多类分类。我在 Windows.
上安装了 Spark 2.3.0
但是我搜索了一下,发现SVM只在Spark中实现了二元分类,所以我们不得不使用one-vs-all策略。当我尝试将 one-vs-all 与 SVM 一起使用时,它给了我一个错误。我搜索了错误,但没有找到解决方法。
我用了这个link的一对一代码
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:\python27\lib\site-packages\pyspark\ml\base.py", line 132, in fit
return self._fit(dataset)
File "D:\python27\lib\site-packages\pyspark\ml\classification.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
) 中的基本二元分类器结合使用。
Spark MLlib (the old, RDD-based API) and Spark ML(新的、基于数据帧的API)不仅是不同的库,而且它们也是不兼容的:你不能混合模型它们(仔细观察示例,您会发现它们从 pyspark.ml
导入基分类器,而不是像您在此处尝试做的那样从 pyspark.mllib
导入基分类器。
不幸的是,截至撰写本文时 (Spark 2.3),Spark ML 不包含 SVM,您目前无法将该算法用作基础分类器 OneVsRest
...
我是 Spark 的新手。我想在 PySpark MLlib 中对 SVM 使用多类分类。我在 Windows.
上安装了 Spark 2.3.0但是我搜索了一下,发现SVM只在Spark中实现了二元分类,所以我们不得不使用one-vs-all策略。当我尝试将 one-vs-all 与 SVM 一起使用时,它给了我一个错误。我搜索了错误,但没有找到解决方法。
我用了这个link的一对一代码 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:\python27\lib\site-packages\pyspark\ml\base.py", line 132, in fit
return self._fit(dataset)
File "D:\python27\lib\site-packages\pyspark\ml\classification.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
) 中的基本二元分类器结合使用。
Spark MLlib (the old, RDD-based API) and Spark ML(新的、基于数据帧的API)不仅是不同的库,而且它们也是不兼容的:你不能混合模型它们(仔细观察示例,您会发现它们从 pyspark.ml
导入基分类器,而不是像您在此处尝试做的那样从 pyspark.mllib
导入基分类器。
不幸的是,截至撰写本文时 (Spark 2.3),Spark ML 不包含 SVM,您目前无法将该算法用作基础分类器 OneVsRest
...