0

我正在尋找一種對不同格式的10位(大部分)整數密鑰進行分類的算法。訓練數據集看起來像這樣:分類10位密鑰的算法

+------------+----------------+ 
| key  | classification | 
+------------+----------------+ 
| 1000| US    | 
| 1000045331 | US    | 
| 000| DE    | 
| 0003453202 | DE    | 
| 000K213411 | ES    | 
| 000K243221 | ES    | 
+------------+----------------+ 

這些密鑰來自不同的系統並以不同的方式創建。有大量的訓練數據集可用。雖然我認爲這些密鑰的某些部分是隨機的,但結構並非如此。

任何幫助將不勝感激。

+0

我認爲你可以計算每個類別的最長公共子字符串,因爲結構看起來是根據示例定義的。 10000-> US,000-> DE,000K2-> ES –

+0

密鑰如何以不同方式創建的不同系統不重疊?很可能有一個範圍和代碼系統。 – stefan

回答

0

在建立模型,訓練和預測之前。最好先分析問題,假設這些密鑰的某些部分是隨機的,結構不是。你需要探索數據集來證明你的假設,並根據數據的分佈,確定使用哪種模型。

  1. 將字符串轉換爲向量,將字符串中的每個字符視爲分類類型要素,使用單熱編碼,將獲得高維稀疏矩陣。在完成這一步之後,您可以計算,分析,建模等等,以獲得訓練數據。
  2. 然後你需要分析數據。其中一個簡單而有效的方法是視覺analysis.For高維數據,則可以使用andrews curvesparallel coordinates等on.You也可以使用降維的方法,如PCA或ICA,然後可視化低維數據。
  3. 根據您的可視化效果,你可以選擇你model.If取決於特徵分佈,不同類別的數據很容易劃分,您幾乎可以使用任何分類算法,如LR,SVM甚至clustering.If這是一個多類問題,你可以使用OVO或OVR.If可視化差,階級之間的區別並不明顯,你可能需要做一些功能的工程,或嘗試樹模型和集成學習方法。
+0

最好理解底層結構。如果做不到這一點,或者爲了檢查這種理解的結果,我會使用像http://www.cs.waikato.ac.nz/ml/weka/這樣的軟件包來嘗試一些不同的方法,並且我一定會包括k-最近的鄰居,將數字視爲數字(最接近的是最小的絕對差異)和數字數組(最接近的是具有相同的大多數相應數字的數字)。 – mcdowella

0

您可以對每個字符進行一次性編碼,並將它們連接起來。

也就是說,假設您有20個可能的字符,這10個字符中的每個字符都可以採用。然後,您可以將每個字符轉換爲長度爲20的零矢量,並在與特定字符相對應的位置放置一個。然後,您將得到一個長度爲10 * 20 = 200的整體特徵向量。然後,您可以將其作爲輸入輸入到任何分類算法中,目標輸出是可能的國家。

如果這確實是確定性的,並且密鑰可以分開,那麼決策樹可能會找到完美的解決方案。甚至邏輯迴歸?如果存在一些「模糊性」,那麼隨機森林可能會更好地發揮作用。