我想使用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}
对应于每个类中的数据点数。
问题:以这种方式进行是否正确?
答案 0 :(得分:2)
由于类标签的比例为2:1,因此这种加权似乎是正确的。
如果不想手动计算班级权重,您可以做的另一件事是传递class_weight='balanced'
并让SVC
为您平衡权重