scikit-learn中具有class_weight的SVC

时间:2018-10-19 16:22:45

标签: python scikit-learn

我想使用class_weight在sikit-learn中创建加权SVC分类器。不过,我不确定我是否正确配置了模型。请考虑以下示例:

x = np.array([[0,0,1],[0,1,1],[1,0,0]])
y = np.array([1,1,0])

cw = {}
for l in set(y):
    cw[l] = np.sum(y == l)
print(cw)

m = SVC(probability = True, max_iter = 1000, class_weight = cw)
m = m.fit(x,y)

我获得了模型:

SVC(C=1.0, cache_size=200, class_weight={0: 1, 1: 2}, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
  max_iter=1000, probability=True, random_state=None, shrinking=True,
  tol=0.001, verbose=False)

其中class_weight={0: 1, 1: 2}对应于每个类中的数据点数。

问题:以这种方式进行是否正确?

1 个答案:

答案 0 :(得分:2)

由于类标签的比例为2:1,因此这种加权似乎是正确的。

如果不想手动计算班级权重,您可以做的另一件事是传递class_weight='balanced'并让SVC为您平衡权重