数据分类

时间:2017-07-12 05:28:20

标签: python mysql classification

我们有一张包含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个索引我们想要分类?

最好的方法是什么?

4 个答案:

答案 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结束)

也可以使用电子邮件的正则表达式