一维数组或列表的隔离林Sklearn以及如何调整超参数

时间:2018-06-20 21:32:17

标签: python algorithm machine-learning scikit-learn anomaly-detection

是否可以为一维数组或列表实现sklearn隔离林。我遇到的所有示例都是针对2维或更大的数据。

我现在已经开发了具有三个功能的模型,下面提到了示例代码摘录

# dataframe of three columns
df_data = datafr[['col_A', 'col_B', 'col_C']]
w_train = page_data[:700]
w_test = page_data[700:-2]

from sklearn.ensemble import IsolationForest
# fit the model
clf = IsolationForest(max_samples='auto')
clf.fit(w_train)

#testing it using test set
y_pred_test = clf.predict(w_test)

我主要依靠的参考文献:http://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html#sphx-glr-auto-examples-ensemble-plot-isolation-forest-py

df_data是具有三列的数据框。我一直在寻找1维或列表数据中的异常值。

另一个问题是如何调整隔离林模型?一种方法是增加污染值以减少误报。但是如何使用其他参数,例如n_estimators,max_samples,max_features,versbose等。

1 个答案:

答案 0 :(得分:1)

将隔离林应用于一维数组或列表没有任何意义。这是因为在那种情况下,它只是从要素到目标的一对一映射。

您可以阅读the official documentation来更好地了解各种参数的帮助

  • 污染
  

数据集的污染量,即数据集中异常值的比例。在拟合时定义决策函数的阈值时使用。

尝试使用[0,0.5]范围内的不同值进行实验,看看哪个结果效果最好

  • max_features
  

从X绘制以训练每个基本估计量的要素数量。

尝试选择5、6、10等值,然后将其与最终测试数据一起验证

  • n_estimators 尝试使用多个值(例如10、20、50等),以查看哪个效果最好。

您还可以使用GridSearchCV自动执行此参数估计过程。

只需尝试使用gridSearchCV尝试不同的值,然后看看哪个能提供最佳结果。

尝试一下

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score, make_scorer

my_scoring_func = make_scorer(f1_score)
parameters = {'n_estimators':[10,30,50,80], 'max_features':[0.1, 0.2, 0.3,0.4], 'contamination' : [0.1, 0.2, 0.3]}
iso_for =  IsolationForest(max_samples='auto')
clf = GridSearchCV(iso_for, parameters,  scoring=my_scoring_func)

然后使用clf来拟合数据。尽管请注意GridSearchCV的x方法需要机器人yfit(即训练数据和标签)。

注意:如果希望将GridSearchCv与Isolation目录林一起使用,可以阅读this blog post以获得更多参考,否则可以手动尝试使用不同的值并绘制图形以查看结果。 / p>