Python 隔离林学习1D数组或列表以及如何调整超参数

Python 隔离林学习1D数组或列表以及如何调整超参数,python,algorithm,machine-learning,scikit-learn,anomaly-detection,Python,Algorithm,Machine Learning,Scikit Learn,Anomaly Detection,有没有一种方法可以为1D数组或列表实现sklearn隔离林?我遇到的所有示例都是针对二维或更高维度的数据的 我现在已经开发了一个具有三个特性的模型,下面提到了截取的示例代码: # 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 Isol

有没有一种方法可以为1D数组或列表实现sklearn隔离林?我遇到的所有示例都是针对二维或更高维度的数据的

我现在已经开发了一个具有三个特性的模型,下面提到了截取的示例代码:

# 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_数据是一个有三列的数据框。我实际上是在寻找一维或列表数据中的异常值


另一个问题是如何调整隔离林模型?其中一种方法是增加污染值以减少误报。但是如何使用其他参数,如n_估计量、最大样本数、最大特征数、versbose等。

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

您可以阅读以更好地了解不同的参数

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

尝试在[0,0.5]范围内使用不同的值进行实验,以查看哪一个给出了最佳结果

  • 最大功能
从X中提取的特征数,用于训练每个基本估计器

尝试5、6、10等值。选择任意整数,并用最终测试数据验证

  • n_估计器尝试10、20、50等多个值,看看哪一个最有效
您还可以使用自动化此参数估计过程

只需尝试使用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需要bot
x
y
(即列车数据和标签)用于
fit
方法


注意:如果希望将GridSearchCv与隔离林一起使用,可以阅读以供进一步参考,否则可以手动尝试使用不同的值并绘制图形以查看结果。

将隔离林应用于1D数组或列表没有意义。这是因为在这种情况下,它只是从特性到目标的一对一映射

您可以阅读以更好地了解不同的参数

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

尝试在[0,0.5]范围内使用不同的值进行实验,以查看哪一个给出了最佳结果

  • 最大功能
从X中提取的特征数,用于训练每个基本估计器

尝试5、6、10等值。选择任意整数,并用最终测试数据验证

  • n_估计器尝试10、20、50等多个值,看看哪一个最有效
您还可以使用自动化此参数估计过程

只需尝试使用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需要bot
x
y
(即列车数据和标签)用于
fit
方法


注意:如果希望将GridSearchCv与隔离林一起使用,您可以阅读以供进一步参考,否则您可以手动尝试使用不同的值并绘制图形以查看结果。

从功能到目标的一对一映射是什么意思。它在两列中的值是否相同?您所指的功能和目标是什么?关于引用,我也引用了它,但在我的用例中,我没有使用网格搜索的标签。@Gambit1614谢谢你的回答。我可以请你看看相关的帖子吗?你说的从功能到目标的一对一映射是什么意思。它在两列中的值是否相同?您所指的功能和目标是什么?关于引用,我也引用了它,但在我的用例中,我没有使用网格搜索的标签。@Gambit1614谢谢你的回答。我可以请你看看相关的帖子吗?