python - 如何控制聚类距离或限制聚类选择?
问题描述
我有一个用例,我必须对大约 200k+ 的大数据集进行聚类。我正在使用 KMeans,但我在使用 KMeans 时遇到了很大的问题。
假设我训练了一个 KMeans 模型,它已准备好预测集群。
现在,我正在发送一个输入`
"(&)=hexvahamje"
它只是嵌入的噪声文本,我确信我的 KMeans 训练数据没有这样的噪声/文本。但是当我对它进行预测时,它会将嘈杂的文本预测为某个簇 x。这对我们的用例来说是错误的。如果有一个太不同的文本,我想预测类似 cluster None 之类的东西,
对这样的嘈杂文本进行一些控制,这些文本被预测为集群 x,在我的训练数据中我什至没有任何类似的文本。
我必须克服这样的问题的所有选择是什么?请帮忙。
解决方案
默认情况下,k-means 不处理噪声。它将假设每个数据点都属于一个集群。
由于您需要处理噪声,我的建议是查看现有的处理噪声的算法,例如DBSCAN,它是一种基于密度的聚类算法。
根据您的用例,您也可以将问题转换为分类问题或运行单独的异常/异常值检测步骤,但如果没有更多信息,很难说。
推荐阅读
- shell - awk 打印与特定最后一条记录关联的字段
- laravel - Laravel7:验证上传的文件
- ios - 有没有办法让当前未呈现的视图的第一响应者辞职?
- c# - .Net Framework:未捕获异常时未调用 finally 块
- jenkins - 是否可以组合或混合 Jenkins 声明式和脚本化管道?
- android - 如何使用带有 onSwiped 的 FirebaseRecyclerAdapter 从 recyclerview 和数据库中删除项目?
- reactjs - 使用 heremap 多次拾取和多次放置 api 遇到问题
- python - 在 Python 中使用 json.dump 将“漂亮”的 JSON 对象保存到光盘
- ruby-on-rails - Rails未定义的局部变量或常量内的方法
- php - 为什么我的 mySql 代码需要很长时间才能执行?