gpt4 book ai didi

scikit-learn - 将目标/标签数据传递给 Scikit-learn GridSearchCV 的 OneClassSVM 拟合方法

转载 作者:行者123 更新时间:2023-12-04 05:08:26 26 4
gpt4 key购买 nike

据我了解,One-Class SVM 是在没有目标/标签数据的情况下进行训练的。

一个答案在 Use of OneClassSVM with GridSearchCV当分类器是 OneClassSVM 时,建议将目标/标签数据传递给 GridSearchCV 的拟合方法。 .
GridSearchCV怎么办方法处理这些数据?

它真的训练OneClassSVM吗?没有目标/标签数据,只使用目标/标签数据进行评估?

我尝试关注 GridSearchCV source code ,但我找不到答案。

最佳答案

Does it actually train the OneClassSVM without the Target/label data, and just use the Target/label data for evaluation?



是的。

GridSearchCV does实际上在 fit 中将标签发送到 OneClassSVM调用,但 OneClassSVM 只是 ignores它。注意在第二个链接中如何将一个数组发送到主 SVM 训练器而不是给定的标签数组 y .参数如 yfit仅存在这样的元估计器,如 GridSearchCV可以以一致的方式工作,而无需担心有监督/无监督的估计器。

为了实际测试这一点,让我们首先使用 GridSearchCV 检测异常值:
X,y = load_iris(return_X_y=True)
yd = np.where(y==0,-1,1)
cv = KFold(n_splits=4,random_state=42,shuffle=True)
model = GridSearchCV(OneClassSVM(),{'gamma':['scale']},cv=cv,iid=False,scoring=make_scorer(f1_score))
model = model.fit(X,yd)
print(model.cv_results_)

注意所有 splitx_test_scorecv_results_ .

现在让我们手动完成,无需发送标签 yd期间 fit称呼:
for train,test in cv.split(X,yd):
clf = OneClassSVM(gamma='scale').fit(X[train]) #Just features
print(f1_score(yd[test],clf.predict(X[test])))

两者应该产生完全相同的分数。

关于scikit-learn - 将目标/标签数据传递给 Scikit-learn GridSearchCV 的 OneClassSVM 拟合方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com