我正在尝试在spark_sklearn
中运行示例代码from sklearn import svm, datasets
from pyspark import SparkContext
from spark_sklearn import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svr = svm.SVC()
sc = SparkContext()
clf = GridSearchCV(sc, svr, parameters)
clf.fit(iris.data, iris.target)
抛出TypeError,完全回溯:
Traceback (most recent call last):
"<stdin>", line 1, in <module>
"spark_sklearn/grid_search.py", line 272, in fit
return self._fit(X, y, groups, ParameterGrid(self.param_grid))
"spark_sklearn/grid_search.py", line 400, in _fit
best_estimator.fit(X, y, **fit_params)
TypeError: fit() argument after ** must be a mapping, not NoneType
我查看了回购中的问题,但没有这样的事情。有人可以帮我解决这个问题吗?
Environment Info:
python 3.5.2
spark 2.2.0
spark_sklearn 0.2.0
答案 0 :(得分:0)
我发现运行我的脚本时出现同样的问题。
你确定你有spark_sklearn 0.2.0吗? 0.2.1版本可以使用几天,在更新了这个软件包后,我出现了同样的错误。
您可以在终端尝试:
pip uninstall spark-sklearn
pip install spark-sklearn == 0.2.0
它对我有用。祝好运 !
答案 1 :(得分:0)
这个问题是由于spark-sklearn使用了scikit-learn 0.19.0中不推荐使用的scikit-learn API。
现在一个解决方法是手动将clf.fit_params设置为一个空的字典,如果你不打算将任何额外的参数传递给交叉验证的估算器的拟合方法
from sklearn import svm, datasets
from pyspark import SparkContext
from spark_sklearn import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svr = svm.SVC()
sc = SparkContext()
clf = GridSearchCV(sc, svr, parameters)
clf.fit_params = {}
clf.fit(iris.data, iris.target)