基于文本信息的分类(即实现字符串核)

我需要对一组消费者数据运行聚类算法,但我不确定如何处理基于文本的字段(一个完美的例子是字母数字邮政编码,例如SE1 8XR)。

显然,我需要使用的是字符串核,我理解其基本概念,但还不够深入,无法成功实现。

理想情况下,我希望新的数值向量能够编码这样一个概念:两个邮政编码越不相似,它们之间的数据点就越远,但我不知道如何做到这一点,而且我找不到任何有用的教程、指南或教科书!

另外,我是在Python中进行这项工作,以防有人知道有用的库。


回答:

关于邮政编码

你不能将邮政编码作为字符串来比较。’AL1 1AA’是圣奥尔本斯,而’AB1 1AA’是阿伯丁。它们在编辑距离上非常接近,但CR6 7DX更接近圣奥尔本斯 🙂

你最好的方法可能是获取一些查找表(我知道你可以从Royalmail购买),或许可以从http://www.ordnancesurvey.co.uk/oswebsite/products/os-opendata.html获取,该表可以将邮政编码,或者至少是扇区’AL1 1’(甚至是地区’AL1’)映射到经纬度,然后你可以使用这些数据进行分组。

其他字符串

一个可能的选项是使用difflib.SequenceMatcher,它返回两个字符串彼此相似程度的百分比分数(还有很多其他算法:谷歌“遗传字符串算法”、“模糊字符串匹配”、“字符串相似性算法”等…)。将所有(可能)80%相似的字符串分组,并为这些字符串分配一个组 – 然后在这个组上进行聚类。

根据你的需求和数据的复杂性,你可能还会发现metaphone和双重metaphone(以及可能的ntlk)有用。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注