Python 如何在sklearn中使用isolationforest中的文档向量

Python 如何在sklearn中使用isolationforest中的文档向量,python,scikit-learn,gensim,outliers,doc2vec,Python,Scikit Learn,Gensim,Outliers,Doc2vec,为了理解隔离林的真正功能,我使用以下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

为了理解隔离林的真正功能,我使用以下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
识别哪些是异常文档。为此,我使用
gensim
训练了一个
doc2vec
模型。现在,对于数据集中的每个文档,我都有一个
300维向量

我的问题是,我可以直接使用
隔离林
中的文档向量作为上述代码中的
X
来检测异常值吗?或者,在将向量应用于隔离林之前,我是否需要降低向量的维数


如果需要,我很乐意提供更多详细信息。

您可以直接使用
predict()
检测异常值,除非您计划删除培训模型中不考虑的一些变量

总的来说,我会说做一个相关性分析,去除彼此高度相关的变量(逻辑基础是,如果它们高度相关,那么它们是相同的,不应该通过加倍考虑来鼓励变量的偏差)


请随意提出异议或陈述您的考虑事项,因为我认为上述内容实际上是我对如何解决问题的看法。

您是否尝试使用300维文档向量作为新的
X
?试一试的结果是什么?我不确定
IsolationForest
是否能很好地应用于像
Doc2Vec
这样的“密集”嵌入,因为它似乎可以对单个特征(维度)进行操作,就好像它们是可以单独解释的一样——这通常不是这种情况(与嵌入空间中的任意非轴对齐方向或邻域相反)。但是,它可能会起作用,最好的办法是尝试一下&分析/报告结果。