2017-07-12 15 views
2

分類されていないデータの10000レコードのテーブルがあります。テキストの類似性や特定の機能などの特定のプロパティに基づいて分類したいと思います。例についてはデータの分類

、 は、単一の列は、今私は、単一のエンティティ名、電話番号、電子メールを持っているインデックスを持っている名前、電話番号や性別

が含まれていることを考えてみましょう。私は適切な型のインデックスIDS

表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のインデックスを分類したいと思いますか?

どのような方法が最適ですか?

+1

あなたがここに機械学習を適用しようとしている場合を除き、あなたがのためにすべてのルールを書き留めておく必要があり分類し、データをループします。これまでに何を試しましたか? –

+0

文字列の比較を試みました。しかし、ある程度のデータの整合性は検証できませんでした。文字列の比較にJaro Winklerアルゴリズムを使用しました。 –

+0

機械学習を使用して、一連の例と正しい分類を与え、高い成功率で分類する方法のルールを学ぶことができます。 –

答えて

0

トレーニング用の列データのインデックス値でタグ付けされたデータがあると仮定して、列データの文字nグラムを作成し、分類子を訓練することができます。

+0

私がn-gramsのことを完全に理解しているかどうかはわかりません。私はそれが実際何であるかについてのアイデアを得ることができます。ありがとう! :) –

-3

UPDATEのテーブルAのSET INDEX_ID =(CASE WHEN column_data REGEXP '[0-9]' THEN 2 WHEN column_data = '男性' OR THEN column_data = '女性' ELSE 4 1 END)電子メールの

使用正規表現また

1

あなたが探しているのは機械学習用の分類子です。

基本的にクラシファイアでは、モデルを作成します(多くのチュートリアルがありますので、hereを開始します)。あなたがトレーニングするデータは正しい分類でなければならないので、これまでに遭遇したことのない新しい形のデータを扱う方法を学び、「最良の推測」を可能にする必要があります。

Googleが何を知っているので、マルチクラスの分類の例を探してください。私の助言は、のpythonで始まることです(上のリンクは次のとおりです)。テンソルフローのチュートリアル)。

機械学習の原則に精通していない場合は、機械学習の基礎から始めて、最初にやっていることを理解することをお勧めします。

+0

ありがとう。これは公正なスタートです。それを試してみましょう。御時間ありがとうございます。 :) –

+0

問題ない幸運 –

0

tensorflowとn-gramsを引き起こす他の答えは、あなたがやりたがっているように、あるデータフレームから別のデータフレームへの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