我的训练数据包含像
EMI3776438, U9BA7E, 20FXU84P, 4506067765, N8UZ00351
我正在使用K-Neighbors分类器算法。
现在,我使用的方法是将字母转换为数字。
例如,a
/ A
将映射到10
,b
/ B
将映射到11
,c
/ C
将映射到12
。转换后,我会将此数据发送到K-Neighbors分类器。
因此,例如,ABI37
成为1011I37
。
这种方法的问题是AA
和1010
都将映射到1010
,并且算法无法区分它们并正确分类。
有没有一种很好的方法可以将这些转换为仅数字(因为这个算法仅适用于数字),以便真正的价值和分类可以正确完成?
要做到这一点,首先需要确定字符串比较的距离(或“度量”)。一旦你有了一个指标,那么将k-nn应用到数据将很容易,因为k-nn只需要能够询问“两个数据点之间的距离是多少?”。有关想法,请参阅this Wikipedia文章。
您可以根据自己的建议简单地将字符转换为int,但是这会忽略一个关键点,即它不一定能给出k-nn所需的字符串“距离”的有意义的度量,以给出合理的东西。最佳指标的选择取决于具体的问题细节,即您的数据实际代表的内容!
This issue讨论了类似的问题。