是否可以为一维数组或列表实现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)
df_data是具有三列的数据框。我一直在寻找1维或列表数据中的异常值。
另一个问题是如何调整隔离林模型?一种方法是增加污染值以减少误报。但是如何使用其他参数,例如n_estimators,max_samples,max_features,versbose等。
答案 0 :(得分:1)
将隔离林应用于一维数组或列表没有任何意义。这是因为在那种情况下,它只是从要素到目标的一对一映射。
您可以阅读the official documentation来更好地了解各种参数的帮助
数据集的污染量,即数据集中异常值的比例。在拟合时定义决策函数的阈值时使用。
尝试使用[0,0.5]范围内的不同值进行实验,看看哪个结果效果最好
从X绘制以训练每个基本估计量的要素数量。
尝试选择5、6、10等值,然后将其与最终测试数据一起验证
您还可以使用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
方法需要机器人y
和fit
(即训练数据和标签)。
注意:如果希望将GridSearchCv与Isolation目录林一起使用,可以阅读this blog post以获得更多参考,否则可以手动尝试使用不同的值并绘制图形以查看结果。 / p>