如何解决IsolationForest 总是预测 1
我正在使用一个项目来检测 out-of-domain
文本输入,借助 IsolationForest
和 tf-idf
功能。以下是我总结的作品:
培训
-
在 tfidf 上:
- 使用
CountVectorizer()
拟合和转换域内数据集。 - 将 tfidftransformer() 与我的
CountVectorizer()
配合使用并保存变压器(以便在测试期间使用)。 - 因此,使用
tfidftransformer()
转换训练数据
- 使用
CountVectorizer()
保存vocabulary_
的TfidfTransformer()
和pickle
对象以供测试时间使用。
- 使用
-
关于 IsolationForest:
- 收集转换后的域内数据集并训练
IsolationForest()
新颖性检测器。 - 使用
joblib
保存模型。
- 收集转换后的域内数据集并训练
测试:
- 加载所有保存的模型。
- 复制与训练步骤类似的所有步骤(仅限转换)后,获取当前域外输入文本的 tfidf 转换特征。
- 使用保存的
IsolationForest
模型预测它是否在域外。
但是我发现即使我的每个测试输入的 tf-idf 特征都大不相同,IsolationForest
总是预测为 1。
可能出了什么问题?
注意:我还尝试通过模仿 IsolationForest
转换器的输出将虚拟向量输入到 tf-idf
模型,以确保 tf-idf
模块是否对此负责,但无论哪个我提供的随机向量总是从 IsolationForest
获得 1 作为输出。另请注意,tf-idf
具有很多功能(令牌),在我的情况下,计数为 48015。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。