为什么在 sklearn GridsearchCV SVM 中使用 class_weight 时会出现错误?
Why do I get error when using class_weight in sklearn GridsearchCV SVM?
下面是我的代码:
tuned_parameters = [
{'kernel': ['linear], 'C':[1, 10], 'class_weight': ['auto']}, {'kernel': ['rbf'], 'C':[1,10], 'class_weight':['auto']}]
clf = GridSearchCV(svm.SVC(), tuned_parameters, cv=5, scoring='accuracy')
clf.fit(x_train,y_train)
但是我收到以下错误:
Traceback (most recent call last):
File "/home/arajabi/PycharmProjects/Muffin/classification.py", line 77, in <module>
clf3.fit(x_train, y_train)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_search.py", line 639, in fit
cv.split(X, y, groups)))
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 779, in __call__
while self.dispatch_one_batch(iterator):
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 625, in dispatch_one_batch
self._dispatch(tasks)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 588, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 111, in apply_async
result = ImmediateResult(func)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 332, in __init__
self.results = batch()
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in __call__
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in <listcomp>
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_validation.py", line 458, in _fit_and_score
estimator.fit(X_train, y_train, **fit_params)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/svm/base.py", line 150, in fit
y = self._validate_targets(y)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/svm/base.py", line 502, in _validate_targets
self.class_weight_ = compute_class_weight(self.class_weight, cls, y_)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/utils/class_weight.py", line 62, in compute_class_weight
" got: %r" % class_weight)
ValueError: class_weight must be dict, 'balanced', or None, got: 'auto'
我对 python 比较陌生。有人可以给我一个简单的解决方案吗?
您为 SVC 传入了 invalid parameter、'auto'
。错误消息会告诉您可能的值是什么:classes、balanced 或 None 的字典。如果您希望它使用默认行为,请将其留空或输入 None
class_weight : {dict, ‘balanced’}, optional
通常当我对 SVC 进行网格搜索时,我会使用 'class_weight': [None, 'Balanced]
除非我有一个特定的 class 余额我想尝试
这不是典型的 Python 错误,GridSearchCV 不喜欢 class_weight 中的 auto
参数:
tuned_parameters = [
{'kernel': ['linear], 'C':[1, 10], 'class_weight': ['auto' <---
我不熟悉,我只能重复错误信息所说的内容:
class_weight must be dict, 'balanced', or None, got: 'auto'
要了解更多信息,您必须查看 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV。
sklearn.svm.SVC的文档是对的here。
参数 class_weight
不接受 'auto' 作为输入值。那是你的错误。
您可以通过更换解决此问题:
'class_weight': ['auto']
与:
'class_weight': ['balanced']
下面是我的代码:
tuned_parameters = [
{'kernel': ['linear], 'C':[1, 10], 'class_weight': ['auto']}, {'kernel': ['rbf'], 'C':[1,10], 'class_weight':['auto']}]
clf = GridSearchCV(svm.SVC(), tuned_parameters, cv=5, scoring='accuracy')
clf.fit(x_train,y_train)
但是我收到以下错误:
Traceback (most recent call last):
File "/home/arajabi/PycharmProjects/Muffin/classification.py", line 77, in <module>
clf3.fit(x_train, y_train)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_search.py", line 639, in fit
cv.split(X, y, groups)))
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 779, in __call__
while self.dispatch_one_batch(iterator):
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 625, in dispatch_one_batch
self._dispatch(tasks)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 588, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 111, in apply_async
result = ImmediateResult(func)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 332, in __init__
self.results = batch()
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in __call__
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in <listcomp>
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_validation.py", line 458, in _fit_and_score
estimator.fit(X_train, y_train, **fit_params)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/svm/base.py", line 150, in fit
y = self._validate_targets(y)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/svm/base.py", line 502, in _validate_targets
self.class_weight_ = compute_class_weight(self.class_weight, cls, y_)
File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/utils/class_weight.py", line 62, in compute_class_weight
" got: %r" % class_weight)
ValueError: class_weight must be dict, 'balanced', or None, got: 'auto'
我对 python 比较陌生。有人可以给我一个简单的解决方案吗?
您为 SVC 传入了 invalid parameter、'auto'
。错误消息会告诉您可能的值是什么:classes、balanced 或 None 的字典。如果您希望它使用默认行为,请将其留空或输入 None
class_weight : {dict, ‘balanced’}, optional
通常当我对 SVC 进行网格搜索时,我会使用 'class_weight': [None, 'Balanced]
除非我有一个特定的 class 余额我想尝试
这不是典型的 Python 错误,GridSearchCV 不喜欢 class_weight 中的 auto
参数:
tuned_parameters = [
{'kernel': ['linear], 'C':[1, 10], 'class_weight': ['auto' <---
我不熟悉,我只能重复错误信息所说的内容:
class_weight must be dict, 'balanced', or None, got: 'auto'
要了解更多信息,您必须查看 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV。
sklearn.svm.SVC的文档是对的here。
参数 class_weight
不接受 'auto' 作为输入值。那是你的错误。
您可以通过更换解决此问题:
'class_weight': ['auto']
与:
'class_weight': ['balanced']