我们有一张包含10000条未分类数据记录的表格,我想根据文本相似性或某些特征等特定属性对它们进行分类。
例如, 考虑一个列包含姓名,电话号码和性别
现在我有一个索引,它有单个实体名称,电话号码,电子邮件。我想用适当类型的索引ID标记列
表A(列表)
id column_data index_id
1 abc
2 male
3 +1298312123
4 pqr
5 +1283711231
6 female
7 +1231231112
8 male
9 xyz
表B(索引表)
id index_name
1 name
2 phone number
3 email
因此,我希望使用单个index_id标记所有姓名,电话号码和性别,以便轻松识别数据。
P.S我使用数据作为演示,我们有数千个数据和1000个索引我们想要分类?
最好的方法是什么?
答案 0 :(得分:1)
您正在寻找的是机器学习分类器。
基本上在分类器中,你创建你的模型(有很多教程,我会开始here),然后用数据训练它。您训练的数据应该是正确的分类,因此它可以学习如何处理以前没有遇到的新形式的数据,并使“最佳猜测”成为可能。 (在机器学习术语中,这称为做出预测)
只是让你知道谷歌的内容,寻找多类分类的例子,我最好的建议是从py {的tensorflow
开始(上面的链接是针对tensorflow的教程)。
如果您不熟悉机器学习原则,我建议您先从机器学习的基础知识开始,这样您就能先了解自己的工作原理。
答案 1 :(得分:0)
假设您有一些数据标记有用于训练的列数据的索引值,您可以为列数据创建字符n-gram并训练分类器。
答案 2 :(得分:0)
我认为引发张量流和n-gram的其他答案都会超调,因为看起来你想要做的就是将index_name id从一个数据帧转移到另一个数据帧。有几种方法可以做到这一点,但其中一个可能看起来像这样,使用正则表达式,无论好坏:
import re
for index, row in tableA.iterrows():
if tableA.loc[index, 'column_data'] == 'male' or tableA.loc[index, 'column_data'] == 'female':
tableA.loc[index, 'index_id'] = ##whatever index number you've assigned for gender, which doesn't appear in your dataframe
elif re.search(r'\W*', str(tableA.loc[index, 'column_data'])): #matches all non-word characters
tableA.loc[index, 'index_id'] = 2
else:
tableA.loc[index, 'index_id'] = 1
答案 3 :(得分:-3)
UPDATE TableA SET index_id =(例如当column_data REGEXP' [0-9]'那么2当column_data ='男性' OR column_data ='女性'那么4节1结束)
也可以使用电子邮件的正则表达式