Skip to main content
 首页 » 编程设计

python之scikit-learn 中带有 class_weight 的 SVC

2025年05月04日20cmt

我想使用 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}对应每一类的数据点数。

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

请您参考如下方法:

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

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