2017-09-13 41 views
0

我試圖在spark_sklearn類型錯誤:飛度()參數**後必須是一個映射,不NoneType

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

它必須是估計的擬合方法安裝問題。請提供其他信息,例如:python版本,spark-sklearn版本。你的PYTHONPATH env是否相應設置?等等。你必須確保任何人有足夠的信息來重現問題。 –

+0

沒有'''sc'''定義(在官方的例子)和文檔字符串與[內部代碼]不相容(https://github.com/databricks/spark-sklearn/blob/3dc69d95b082d59cb5b19a56fe0b4f16b8d8c0c5/python/ spark_sklearn.GridSearchCV的spark_sklearn/grid_search.py​​#L25)。對我來說是一個不使用它的強有力的理由。 – sascha

+0

我有與python 2.7相同的問題 – user1753235

回答

0

我發現運行腳本的問題相同。
你確定你已經spark_sklearn 0.2.0? 0.2.1版本可供幾天,並且在已經更新了這個包我有exactely同樣的錯誤。

您可以在終端嘗試:

pip uninstall spark-sklearn
pip install spark-sklearn==0.2.0

這對我的作品。祝你好運 !


0

此問題是由於火花sklearn的使用scikit學習不再被推薦使用原料藥scikit學習0.19.0。

對於現在的解決方法是手動設置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) 
相關問題