为了理解isolation forest
的实际用途,我使用以下8个功能按以下方式进行了示例项目。
from sklearn.ensemble import IsolationForest
#features
df_selected = df[["feature1", "feature2", "feature3", "feature4", "feature5", "feature6", "feature7", "feature8"]]
X = np.array(df_selected)
#isolation forest
clf = IsolationForest(max_samples='auto', random_state=42, behaviour="new", contamination=.01)
clf.fit(X)
y_pred_train = clf.predict(X)
print(np.where(y_pred_train == -1)[0])
现在,我想使用
isolation forest
识别哪些异常文件。为此,我使用doc2vec
训练了gensim
模型。现在,对于数据集中的每个文档,我都有一个300-dimensional vector
。我的问题是我可以立即使用上述代码中的
isolation forest
中的文档向量作为X
来检测异常值吗?还是在将向量应用于isolation forest
之前需要减小向量的维数?如果需要,我很乐意提供更多详细信息。
最佳答案
您可以立即使用predict()
来检测异常值,除非您计划删除一些训练模型中不会考虑的变量。
通常,我会说要进行相关分析,并删除彼此高度相关的变量(逻辑基础是,如果它们高度相关,则它们是相同的,不应通过将变量加倍来鼓励变量的偏见。考虑)。
否则,请随时提出异议或陈述您的考虑,因为我认为以上内容实际上是我对如何解决问题的看法。