Ana*_*tha 5 python-3.x scikit-learn data-science
我有多变量时间序列数据,想用隔离森林算法检测异常。想从 gridSearchCV 获得最佳参数,这里是 gridSearch CV 的代码片段。
输入数据集加载了以下代码片段。
df = pd.read_csv("train.csv")
df.drop(['dataTimestamp','Anomaly'], inplace=True, axis=1)
X_train = df
y_train = df1[['Anomaly']] ( Anomaly column is labelled data).
Run Code Online (Sandbox Code Playgroud)
定义隔离森林的参数。
clf = IsolationForest(random_state=47, behaviour='new', score="accuracy")
param_grid = {'n_estimators': list(range(100, 800, 5)), 'max_samples': list(range(100, 500, 5)), 'contamination': [0.1, 0.2, 0.3, 0.4, 0.5], 'max_features': [5,10,15], 'bootstrap': [True, False], 'n_jobs': [5, 10, 20, 30]}
f1sc = make_scorer(f1_score)
grid_dt_estimator = model_selection.GridSearchCV(clf, param_grid,scoring=f1sc, refit=True,cv=10, return_train_score=True)
grid_dt_estimator.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
执行 fit 后,出现以下错误。
值错误:目标是多类但平均值 = 二进制。请选择其他平均设置。
有人可以指导我这是关于什么的吗,尝试了average='weight',但仍然没有运气,这里有什么地方做错了。请让我知道如何获得 F 分数。
您之所以会出现此错误,是因为您average在将 f1_score 转换为计分器时没有设置参数。事实上,如文档中所述:
average : string, [None, 'binary' (default), 'micro', 'macro', 'samples', 'weighted'] 多类/多标签目标需要此参数。如果没有,则返回每个班级的分数。
结果是评分器为您的分类问题中的每个类返回多个分数,而不是单个度量。解决方案是根据您的需要为 声明average参数的可能值之一f1_score。因此,我重构了您作为示例提供的代码,以便为您的问题提供可能的解决方案:
from sklearn.ensemble import IsolationForest
from sklearn.metrics import make_scorer, f1_score
from sklearn import model_selection
from sklearn.datasets import make_classification
X_train, y_train = make_classification(n_samples=500,
n_classes=2)
clf = IsolationForest(random_state=47, behaviour='new')
param_grid = {'n_estimators': list(range(100, 800, 5)),
'max_samples': list(range(100, 500, 5)),
'contamination': [0.1, 0.2, 0.3, 0.4, 0.5],
'max_features': [5,10,15],
'bootstrap': [True, False],
'n_jobs': [5, 10, 20, 30]}
f1sc = make_scorer(f1_score(average='micro'))
grid_dt_estimator = model_selection.GridSearchCV(clf,
param_grid,
scoring=f1sc,
refit=True,
cv=10,
return_train_score=True)
grid_dt_estimator.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6172 次 |
| 最近记录: |