分类10位密钥的算法

问题描述:

我正在寻找一种对不同格式的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

在建立模型,训练和预测之前。最好先分析问题,假设这些密钥的某些部分是随机的,结构不是。你需要探索数据集来证明你的假设,并根据数据的分布,确定使用哪种模型。

  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

您可以对每个字符进行一次性编码,并将它们连接起来。

也就是说,假设您有20个可能的字符,这10个字符中的每个字符都可以采用。然后,您可以将每个字符转换为长度为20的零矢量,并在与特定字符相对应的位置放置一个。然后,您将得到一个长度为10 * 20 = 200的整体特征向量。然后,您可以将其作为输入输入到任何分类算法中,目标输出是可能的国家。

如果这确实是确定性的,并且密钥可以分开,那么决策树可能会找到完美的解决方案。甚至逻辑回归?如果存在一些“模糊性”,那么随机森林可能会更好地发挥作用。