我正在尝试在OneClassSVM上执行GridSearchCV函数,但我似乎无法为OCSVM找到正确的评分方法。从我收集的内容中,OneClassSVM.score不存在,因此不具备GridSearchCV中所需的默认评分功能。遗憾的是,文档中没有任何评分方法也不起作用,因为它们专用于受监督的ML和OCSVM是一种无监督的方法。
有没有办法在OneClassSVM上执行GridSearch(或类似的东西,让我用正确的参数调整模型)?
这是我的GridSearchCV代码
{{1}}
是的我知道.fit只需要一个参数,但由于它是无监督的方法,我没有任何Y放在那里。感谢您的帮助。
答案 0 :(得分:0)
我知道这是一个较晚的答复,但希望对某些人有用。 要调整参数,您需要有正确的标签(异常值/内衬)。 然后,当您具有正确的参数时,可以以无人监督的方式使用OneClassSVM。
因此,这种方法的评分功能可以是:
检查精度和召回得分的代码:
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