Class_weight 用于 Python 中的 SVM 分类器

Class_weight for SVM classifier in Python

我有一组参数可以使用 GridSearchCV 为 svm.SVC 分类器选择最佳参数:

X=dataset.ix[:, dataset.columns != 'class']
Y=dataset['class']
X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(X, Y, test_size=0.5)

clf=svm.SVC()
params=
        {'kernel':['linear', 'rbf', 'poly', 'sigmoid'],
         'C':[1, 5, 10],
         'degree':[2,3],
         'gamma':[0.025, 1.0, 1.25, 1.5, 1.75, 2.0],
         'coef0':[2, 5, 9],
         'class_weight': [{1:10}, 'balanced']}

searcher = GridSearchCV(clf, params, cv=9, n_jobs=-1, scoring=f1)
searcher.fit(X_train, Y_train)

我收到错误:ValueError: class_weight must be dict, 'auto', or None, got: 'balanced' 为什么我有它,如果在 svm 参数的说明中有 'balanced',而不是 'auto'

'balanced' 应该像您在第 51 行或第 74 行中看到的那样工作 https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/class_weight.py

执行sklearn.__version__检查你是什么版本运行。