分类 10 位数字键的算法 [关闭]
Posted
技术标签:
【中文标题】分类 10 位数字键的算法 [关闭]【英文标题】:Algorithm to classify 10 digit keys [closed] 【发布时间】:2018-02-13 01:27:43 【问题描述】:我正在寻找一种算法,可以对不同格式的 10 位(主要是)整数键进行分类。训练数据集如下所示:
+------------+----------------+
| key | classification |
+------------+----------------+
| 1000012355 | US |
| 1000045331 | US |
| 0000123101 | DE |
| 0003453202 | DE |
| 000K213411 | ES |
| 000K243221 | ES |
+------------+----------------+
密钥来自不同的系统,并以不同的方式创建。有大量可用的训练数据集。虽然我假设这些键的某些部分是随机的,但结构不是。
任何帮助将不胜感激。
【问题讨论】:
我认为您可以计算每个类别的最长公共子字符串,因为结构看起来是根据示例定义的。 10000-> 美国,000-> 德国,000K2->ES 来自以不同方式创建的不同系统的密钥如何不重叠?很可能有一个范围和代码系统。 【参考方案1】:您可以对每个字符进行一次热编码,然后将它们连接起来。
也就是说,假设您有 20 个可能的字符,密钥中的这 10 个字符中的每一个都可以使用。然后,您可以将每个字符转换为一个长度为 20 的零向量,其中一个对应于特定字符的位置。然后,您将拥有一个长度为 10 * 20 = 200 的整体特征向量。然后您可以将其作为输入输入任何分类算法,目标输出是可能的国家/地区。
如果这确实是确定性的,并且可以分离键,那么决策树可能会找到完美的解决方案。甚至逻辑回归?如果有一些“模糊性”,那么像随机森林这样的东西可能会更好。
【讨论】:
【参考方案2】:在构建模型、训练和预测之前。最好先分析问题,假设这些键的某些部分是随机的,但结构不是随机的。您需要探索数据集以证明您的假设,并根据数据分布,确定使用什么模型。
-
将字符串转换为向量,将字符串中的每个字符视为一个分类类型的特征,使用one-hot编码,你会得到一个高维的稀疏矩阵。完成此步骤后,您可以对训练数据进行计算、分析、建模等操作。
然后你需要分析数据。一种简单有效的方法是可视化分析。对于高维数据,可以使用andrews curves、parallel coordinates等。也可以使用PCA或ICA等降维方法,然后对低维数据进行可视化。
根据您的可视化结果,您可以选择您的模型。如果根据特征分布,很容易划分不同类别的数据,您可以使用几乎任何分类算法,例如 LR、SVM 甚至聚类。如果是多类问题,可以使用OVO或OVR。如果可视化较差,类之间的区分不明显,可能需要做一些特征工程,或者尝试树模型和集成学习的方法。
【讨论】:
了解底层结构当然是最好的。如果做不到这一点,或者要检查这种理解的结果,我会使用像 cs.waikato.ac.nz/ml/weka 这样的包来尝试多种不同的方法,并且我肯定会包括 k-最近邻,将数字都视为数字(最近的是最小绝对差)和数字数组(最近的是数字,大多数对应数字相同)。以上是关于分类 10 位数字键的算法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章