OneClassSVM与GridSearchCV的使用

时间:2018-04-23 10:44:58

标签: python scikit-learn svm grid-search

我正在尝试在OneClassSVM上执行GridSearchCV函数,但我似乎无法为OCSVM找到正确的评分方法。从我收集的内容中,OneClassSVM.score不存在,因此不具备GridSearchCV中所需的默认评分功能。遗憾的是,文档中没有任何评分方法也不起作用,因为它们专用于受监督的ML和OCSVM是一种无监督的方法。

有没有办法在OneClassSVM上执行GridSearch(或类似的东西,让我用正确的参数调整模型)?

这是我的GridSearchCV代码

{{1}}

是的我知道.fit只需要一个参数,但由于它是无监督的方法,我没有任何Y放在那里。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我知道这是一个较晚的答复,但希望对某些人有用。 要调整参数,您需要有正确的标签(异常值/内衬)。 然后,当您具有正确的参数时,可以以无人监督的方式使用OneClassSVM。

因此,这种方法的评分功能可以是:

  • f1
  • 精度
  • 召回

检查精度和召回得分的代码:

scores = ['precision', 'recall']
for score in scores:
    clf = GridSearchCV(svm.OneClassSVM(), tuned_parameters, cv=10,
                           scoring='%s_macro' % score, return_train_score=True)

    clf.fit(X_train, y_train)

    resultDf = pd.DataFrame(clf.cv_results_)
    print(resultDf[["mean_test_score", "std_test_score", "params"]].sort_values(by=["mean_test_score"], ascending=False).head())

    print("Best parameters set found on development set:")
    print()
    print(clf.best_params_)

以下是带有GridSearchCV的ElipticEnvelope(另一种异常检测算法)用法示例的链接: https://sdsawtelle.github.io/blog/output/week9-anomaly-andrew-ng-machine-learning-with-python.html

在这里您可以找到使用精度和分类算法的回忆评分的示例: https://scikit-learn.org/stable/auto_examples/model_selection/plot_grid_search_digits.html