Scikit learn 使用“时会发生什么?”;“U级重量”;及;";svm.scv()中同时存在的参数?
我正在尝试建立一个分类器。在玩hyperparameters时,我碰巧同时使用了参数Scikit learn 使用“时会发生什么?”;“U级重量”;及;";svm.scv()中同时存在的参数?,scikit-learn,Scikit Learn,我正在尝试建立一个分类器。在玩hyperparameters时,我碰巧同时使用了参数class_权重和C,并且看到了我不理解的结果 这个代码给了我一个不同的f1分数 clf = svm.SVC(kernel="linear",class_weight={1:10,0:5}) clf.fit(X_train_tfidf, y_train) predicted=clf.predict(X_test_tfidf) f1_score(y_test, predicted) 从这个代码 clf = svm
class_权重
和C
,并且看到了我不理解的结果
这个代码给了我一个不同的f1分数
clf = svm.SVC(kernel="linear",class_weight={1:10,0:5})
clf.fit(X_train_tfidf, y_train)
predicted=clf.predict(X_test_tfidf)
f1_score(y_test, predicted)
从这个代码
clf = svm.SVC(kernel="linear",class_weight={1:10,0:5},c=5)
clf.fit(X_train_tfidf, y_train)
predicted=clf.predict(X_test_tfidf)
f1_score(y_test, predicted)
我的理解是,在设置类权重时,您正在根据此等式设置C
值
在这种情况下,我希望忽略C
参数。但事实似乎并非如此。sklearn在用它做什么?我理解错了什么吗
谢谢设置类权重和设置
C
参数是两件独立的事情,您不应该期望结果是相同的
文件说明了以下内容:
在需要对某些类或某些单个样本给予更多重视的问题中,可以使用关键词class_-weight和sample_-weight
SVC在fit方法中实现关键字class_权重。它是一个{class_label:value}形式的字典,其中value是一个浮点数>0,它将class_label的参数C设置为C*value
换言之:
- 在第一个示例中,类0的
,类1的C=1*5=5
(因为默认值为1.0)C=1*10=10
- 在第二个示例中,类0的
,类1的C=5*5=25
C=5*10=50