我得到了一组测试数据,这些数据由三个人判定为真或假。我还得到了他们的信心程度——例如,有时三分之二的人会朝一个方向达成一致。我如何将这些信息整合到我的分类模型中?我已经研究了SGDClassifier,它有class_weight
参数,支持向量机(SVM)也有这个参数。我接着遍历每一个信心水平,并为每一行数据分配权重3或2,这取决于所有三个人是否对分类达成了一致:
x=0weights = {}for d in confidence: val = int(d[1]) if(val == 1): weight = 3 else: # d=0.66 weight = 2 x = x+1 weights[x] = weight
不幸的是,当我运行以下代码时:
SGDClassifier(class_weight=weights)
我得到了如下错误:
类标签2不存在。
我哪里做错了?
回答:
数据点的confidence应该用sample_weight
来表达,而不是class_weight
。
一些分类器的.fit
方法接受sample_weight
参数。
在scikit-learn的文档中有一个示例展示了如何使用支持向量分类器来做到这一点。相关摘录如下:
# 拟合模型clf_weights = svm.SVC()clf_weights.fit(X, y, sample_weight=sample_weight_last_ten)